Mendelevium
Diary
Drug Design
Field Knowledge
Academia
Yang
Biology
Physics
Free Energy
Machine Learning & AI
Active Learning
Basics
Boltz-2
Data
Generation
Interpretability
QSAR application
Representations
Mol2Image
Workflow & Agent
Molecular Dynamics
FF & Algorithm
Small Molecule
martini
water
Interaction
Modeling & Tools
QM
Sampling & Analysis
Allostery
Fundamental
Other
Specific Sytems
Enzyme Engineering
Fiber & LLPS
Membrane
orientation_penetration
Metal
Nano Polymers
Skin Permeation
Techniques
Linux
Python
Research
Web
about
Home
Contact
Copyright © 2025 Xufan Gao | Academic Research Blog
Home
>
Machine Learning & AI
> Basics
A Bunch of Biophysics is Loading ...
Basics
分子性质预测:机器学习回归算法详解(三)高级模型与应用指南
分子性质预测:机器学习回归算法详解(三)高级模型与应用指南 系列导航: 第一篇:基础回归模型 - 线性模型、支持向量机、近邻方法 第二篇:树模型与梯度提升 - 决策树、随机森林、XGBoost/LightGBM等 第三篇:高级模型与应用指南(本文)- 神经网络、概率模型、VAE、模型选择指南 导读 系列最终篇将介绍高级回归模型和完整的应用指南: 神经网络:深度学习在回归任务中的应用 概率模型:高斯过程等提供不确定性量化的模型 深度生成模型:VAE在特征学习中的应用 模型选择指南:如何根据数据特征、应用场景、计算资源选择最合适的模型 本篇将帮助你构建完整的回归模型工具箱,并在实际项目中做出最佳选择。 1. 神经网络 1.1 MLPRegressor(多层感知机回归器) 核心思想:通过多层非线性变换学习复杂的特征表示。 sklearn实现:from sklearn.neural_network import MLPRegressor 前向传播: \(\mathbf{h}^{(1)} = \sigma(\mathbf{W}^{(1)}\mathbf{x} + \mathbf{b}^{(1)})\) \(\mathbf{h}^{(2)} = \sigma(\mathbf{W}^{(2)}\mathbf{h}^{(1)} + \mathbf{b}^{(2)})\) \(\hat{y} = \mathbf{W}^{(3)}\mathbf{h}^{(2)} + \mathbf{b}^{(3)}\) 其中 $\sigma$ 是激活函数(ReLU、Tanh等)。 特点: ✅ 强大表达能力:理论上可拟合任意函数 ✅ 特征学习:自动提取高层特征 ❌ 需要大量数据:小样本易过拟合 ❌ 调参困难:学习率、隐藏层结构等 ⚙️ 关键参数: hidden_layer_sizes:隐藏层结构(如 (128, 64, 32)) alpha:L2正则化强度 learning_rate_init:初始学习率 📊 推荐场景:特征复杂、样本充足的大规模分子性质预测 2. 概率模型 2.1 GaussianProcessRegressor(高斯过程回归器) 核心思想:将函数本身建模为高斯过程,通过核函数定义点之间的相关性。 sklearn实现:from sklearn.gaussian_process import GaussianProcessRegressor 预测分布(在观测数据 $\mathcal{D}$ 下): \(p(f(\mathbf{x}_*) | \mathcal{D}) = \mathcal{N}(\mu_*, \sigma_*^2)\) 其中均值和方差由核函数 $k(\mathbf{x}, \mathbf{x}’)$ 计算得出。 特点: ✅ 优雅的不确定性量化:提供完整的预测分布 ✅ 小样本友好:数十个样本即可建模 ❌ 计算复杂度高:$O(n^3)$,样本数 >1000 时不可行 ⚙️ 关键参数: kernel:核函数(RBF、Matérn等) alpha:噪声水平 📊 推荐场景:高价值小样本分子数据,主动学习 2.2 概率模型家族对比 模型 sklearn实现 不确定性量化 核心优势 计算复杂度 适用数据规模 推荐场景 BayesianRidge BayesianRidge ✓ 自动正则化,无需调参 $O(n^3)$ 小-中等 需要不确定性估计 GaussianProcessRegressor GaussianProcessRegressor ✓ 完整预测分布,小样本友好 $O(n^3)$ 小样本(<1000) 高价值小样本 ARDRegressor ARDRegressor ✗ 极致特征选择 $O(n^3)$ 任意大小 超高维稀疏 对比要点: 不确定性量化:只有GaussianProcessRegressor提供完整的预测分布 计算复杂度:BayesianRidge < ARDRegressor < GaussianProcessRegressor 适用规模:GaussianProcessRegressor受限于小样本,其他两者适用任意规模 特征选择能力:ARDRegressor > BayesianRidge > GaussianProcessRegressor 3. 深度生成模型 3.1 VAE(变分自编码器) 核心思想:通过编码器-解码器架构学习数据的低维潜在表示,同时利用变分推断确保潜在空间的平滑性。 模型架构: \(\text{Encoder}: \mathbf{x} \rightarrow \mathcal{N}(\mu(\mathbf{x}), \sigma^2(\mathbf{x}))\) \(\text{Latent}: \mathbf{z} \sim \mathcal{N}(\mu, \sigma^2)\) \(\text{Decoder}: \mathbf{z} \rightarrow \hat{\mathbf{x}}\) 损失函数: \(\mathcal{L} = \underbrace{\|\mathbf{x} - \hat{\mathbf{x}}\|^2}_{\text{重构损失}} + \beta \cdot \underbrace{D_{KL}(q(\mathbf{z}|\mathbf{x}) \| p(\mathbf{z}))}_{\text{KL散度正则化}}\) 常见变体: VAE(latent=64/128/256):不同潜在维度,平衡压缩率和信息保留 VAE(compact):浅层网络,快速训练 VAE(deep):深层网络,更强表达能力 特点: ✅ 无监督特征学习:自动从向量表示提取深层特征 ✅ 降维能力强:高维指纹→低维潜在向量 ✅ 支持生成:可用于分子生成(虽然主要用于回归) ❌ 训练复杂:需要GPU加速,调参困难 ⚙️ 关键参数: latent_dim:潜在空间维度 beta:KL散度权重(β-VAE) 📊 推荐场景: 高维稀疏数据 需要特征降维的迁移学习 与传统ML模型配合使用 4. 模型选择指南 4.1 按应用场景选择 场景 推荐模型 理由 快速baseline LinearRegression, Ridge, KNeighborsRegressor 训练极快,评估回归模型可行性 追求准确率 XGBoost, LightGBM, RandomForestRegressor 集成学习,性能最佳 小样本(<100) BayesianRidge, GaussianProcessRegressor 贝叶斯方法,提供不确定性 大数据集(>100k) LGBMRegressor, SGDRegressor 内存高效,训练快速 需要可解释性 LinearRegression, Ridge, Lasso, DecisionTreeRegressor 清晰的特征权重或决策规则 数据有离群点 HuberRegressor, TheilSenRegressor, RANSACRegressor, RandomForestRegressor 鲁棒损失函数或集成方法 计数数据 PoissonRegressor 符合数据分布假设 高维稀疏数据 Lasso, ElasticNet, ARDRegressor L1正则化特征选择 深度特征学习 VAE, MLPRegressor 非线性表征学习 不确定性量化 GaussianProcessRegressor, BayesianRidge, QuantileRegressor 提供置信区间或预测分布 复杂非线性 SVR, XGBoost, MLPRegressor 处理复杂的非线性关系 实时预测 LinearRegression, DecisionTreeRegressor 推理速度快 4.2 按数据特征选择 特征维度 低维(<10):任意回归模型 中维(10-100):RandomForestRegressor, GradientBoostingRegressor, Lasso 高维(100-10000):Lasso, ElasticNet, LGBMRegressor, VAE 超高维(>10000):Lasso, ARDRegressor, VAE 样本数量 小样本(<100):LinearRegression, Ridge, GaussianProcessRegressor 中等样本(100-10k):RandomForestRegressor, XGBoost, SVR 大样本(>10k):LGBMRegressor, SGDRegressor, MLPRegressor 超大样本(>100k):LGBMRegressor, SGDRegressor 数据质量 噪声小:任意回归模型 中等噪声:RandomForestRegressor, GradientBoostingRegressor 噪声大/有离群点:HuberRegressor, TheilSenRegressor, RANSACRegressor, QuantileRegressor 4.3 按计算资源选择 资源限制 推荐模型 避免模型 内存有限 LinearRegression, Ridge, SGDRegressor, LGBMRegressor RandomForestRegressor(n_estimators大), GaussianProcessRegressor CPU有限 LinearRegression, Ridge, DecisionTreeRegressor SVR(大数据集), GradientBoostingRegressor 有GPU MLPRegressor, VAE, XGBoost/LGBMRegressor(GPU版本) - 需要快速训练 LinearRegression, Ridge, DecisionTreeRegressor, LGBMRegressor SVR, GaussianProcessRegressor, MLPRegressor 需要快速预测 LinearRegression, Ridge, RandomForestRegressor(小) KNeighborsRegressor, GaussianProcessRegressor 4.4 集成学习策略 为什么要集成? 单个模型可能有偏差 不同模型捕捉不同的数据模式 集成通常能提升1-5%的性能 简单集成方法: 平均集成(Averaging) from sklearn.ensemble import VotingRegressor ensemble = VotingRegressor([ ('rf', RandomForestRegressor()), ('xgb', XGBRegressor()), ('lgbm', LGBMRegressor()) ]) 适用场景:模型性能相近 Stacking from sklearn.ensemble import StackingRegressor base_estimators = [ ('rf', RandomForestRegressor()), ('xgb', XGBRegressor()), ('lgbm', LGBMRegressor()) ] stacking = StackingRegressor( estimators=base_estimators, final_estimator=Ridge() ) 适用场景:模型差异大,追求极致性能 5. 实战建议 本系列介绍了覆盖从经典到前沿的30+种机器学习回归模型,形成了完整的回归算法生态: 第一篇:基础回归模型 线性模型家族:从简单的线性回归到鲁棒回归、广义线性模型 支持向量回归:处理非线性关系的经典方法 近邻方法:基于相似性的简单有效算法 第二篇:树模型与梯度提升 决策树与森林回归器:强大泛化,特征重要性分析 梯度提升回归器:准确性之王,竞赛首选 第三篇:高级模型与应用指南 神经网络回归器:深度学习,复杂模式捕捉 概率回归模型:不确定性量化,贝叶斯框架 深度生成模型:VAE提供特征学习与降维能力 完整的模型选择指南:按场景、数据特征、计算资源选择最合适的模型 模型选择决策树 graph TB Start[开始] --> Q1{数据量<100?} Q1 -->|是| M1[GaussianProcessRegressor<br/>BayesianRidge] Q1 -->|否| Q2{特征维度>1000?} Q2 -->|是| M2[Lasso / ElasticNet<br/>VAE] Q2 -->|否| Q3{需要可解释性?} Q3 -->|是| M3[LinearRegression / Ridge<br/>Lasso / DecisionTree] Q3 -->|否| Q4{追求极致性能?} Q4 -->|是| M4[XGBoost / LightGBM<br/>Stacking] Q4 -->|否| M5[RandomForestRegressor] style Start fill:#e1f5ff style M1 fill:#d4edda style M2 fill:#d4edda style M3 fill:#d4edda style M4 fill:#d4edda style M5 fill:#d4edda style Q1 fill:#fff3cd style Q2 fill:#fff3cd style Q3 fill:#fff3cd style Q4 fill:#fff3cd 最后的建议 记住:没有万能的回归器,只有最适合的回归器 实战流程建议: 快速baseline(1小时):LinearRegression, Ridge, KNeighbors 性能优化(半天):RandomForest, XGBoost, LightGBM 鲁棒性验证(几小时):鲁棒回归,异常值分析 可解释性分析(几小时):特征重要性,SHAP值 集成学习(半天):Stacking或Blending 持续学习: 关注新模型和新方法(如Transformer回归器) 参加Kaggle竞赛积累经验 阅读顶会论文了解前沿进展 Happy Regression Modeling! 🚀 6. 参考资料 Scikit-learn Documentation: https://scikit-learn.org/ XGBoost Documentation: https://xgboost.readthedocs.io/ LightGBM Documentation: https://lightgbm.readthedocs.io/ CatBoost Documentation: https://catboost.ai/docs/ Kingma & Welling (2013). “Auto-Encoding Variational Bayes” Hastie et al. (2009). “The Elements of Statistical Learning” Bishop (2006). “Pattern Recognition and Machine Learning” Rasmussen & Williams (2006). “Gaussian Processes for Machine Learning”
Machine Learning & AI
· 2025-11-15
数据分割的艺术:splito教程
数据分割的艺术:splito教程 splito是一个专门为生命科学领域设计的机器学习数据分割库。本文深入探讨了splito库中各种数据分割方法的原理、应用场景和实现细节,包括基础的骨架分割、基于结构的分割、分子量分割、分层分布分割以及先进的多目标优化分割方法。通过详细的代码示例和实际应用案例,帮助研究人员在药物发现项目中选择合适的数据分割策略。 关于Splito Splito是一个专为辅助药物发现而设计的Python库,通过提供强大的数据解析和分割方法,帮助研究人员和化学家高效处理机器学习项目中的数据。 Splito是Datamol生态系统的一部分:https://datamol.io 安装 可以使用pip安装splito: pip install splito 文档官网:https://splito-docs.datamol.io/stable/ 核心结论 splito提供了从基础到高级的多种专业数据分割方法,覆盖药物发现全流程 骨架分割和结构分割(Perimeter/MaxDissimilarity)测试模型对新化学结构的泛化能力 SIMPD通过多目标优化模拟真实项目中分子性质的时间演进 Lo Splitter评估模型对微小结构修饰的敏感度,专为先导化合物优化设计 MOOD Protocol自动选择最适合特定部署场景的分割策略 背景 在机器学习项目中,特别是在药物发现领域,数据分割是一个至关重要的步骤。模型使用训练集构建,然后在测试集上进行预测评估。测试集预测值与实际活性值的一致程度(通常用R平方等指标量化)作为模型内部一致性的评估指标,也是模型预测能力的指标。然而,预测估计的具体标准取决于选择测试集化合物的标准,与真实前瞻性预测场景相比。 在药物发现项目中,采用各种数据分割策略来训练和评估机器学习模型。这些策略有助于确保模型的性能稳健,并且能够很好地泛化到新的、未见过的数据。常见的分割策略包括随机分割、时间序列分割、基于骨架的分割、分层分割等。 splito库正是为了解决这些数据分割挑战而设计的,它为生命科学领域的研究人员提供了强大的数据解析和分割工具。 研究内容 基础分割方法:骨架分割 骨架分割(ScaffoldSplit)是药物发现中最常用的分割方法之一。这种方法基于公共结构来分割化学数据集,确保训练集和测试集包含不同的化学结构,同时保持骨架的多样性。 方法原理与应用 骨架分割基于公共结构将数据集分区,确保训练集和测试集包含不同的化学骨架,从而评估模型对新化学结构的泛化能力。当骨架对生物活性有显著影响时最有用,通常在先导化合物优化阶段使用。 代码实现 import datamol as dm from splito import ScaffoldSplit # 加载数据 data = dm.data.chembl_drugs() # 初始化分割器 splitter = ScaffoldSplit(smiles=data.smiles.tolist(), n_jobs=-1, test_size=0.2, random_state=111) # 生成训练集和测试集的索引 train_idx, test_idx = next(splitter.split(X=data.smiles.values)) 可视化结果 图1:ScaffoldSplit的化合物UMAP嵌入可视化(蓝色=训练集,橙色=测试集) 图2:ScaffoldSplit的骨架UMAP嵌入可视化(骨架在化学空间中形成明显的分离) 我感觉也没太分开。。。 基于结构的分割方法 PerimeterSplit PerimeterSplit通过迭代选择距离最远的分子对,将位于化学空间边缘的分子放入测试集,测试模型的外推能力。实践发现这种方法能够选出具有更好泛化能力的模型。 图3:PerimeterSplit的UMAP嵌入可视化(测试集分布在化学空间边缘) MaxDissimilaritySplit 最大不相似性分割通过最大化训练集和测试集之间的距离来分割数据。选择两个最不相似的分子分别作为训练集和测试集的“种子”,然后迭代构建,使测试集聚集在化学空间的某个区域,训练集覆盖其余区域。 图4:MaxDissimilaritySplit的UMAP嵌入可视化(最大化训练集与测试集的不相似性) 代码实现 import datamol as dm import splito # 加载数据 data = dm.data.freesolv() # 定义PerimeterSplit splitter = splito.PerimeterSplit(n_jobs=-1, test_size=0.2, random_state=111) train_idx, test_idx = next(splitter.split(X=data["smiles"].values)) # 定义MaxDissimilaritySplit splitter = splito.MaxDissimilaritySplit(n_jobs=-1, test_size=0.2, random_state=111) train_idx, test_idx = next(splitter.split(X=data.smiles.values)) 其他有用的分割方法 MolecularWeightSplit 分子量分割通过按分子量对分子进行排序,然后找到合适的分割点将分子分成两个集合。应用场景是训练一个能够从小分子学习SAR并旨在泛化到更大分子的模型。 splitter = splito.MolecularWeightSplit(test_size=0.2, random_state=111, generalize_to_larger=True) train_idx, test_idx = next(splitter.split(X=data.smiles.tolist())) 图5:MolecularWeightSplit的分子量分布(橙色=训练集小分子,蓝色=测试集大分子) 图6:MolecularWeightSplit的UMAP嵌入可视化 StratifiedDistributionSplit 分层分布分割使用实验测量值来分割数据集,使得训练集、测试集和验证集都具有相同的值分布。而不是使用某种间隔进行分箱,我们将使用测量值的一维聚类。 splitter = splito.StratifiedDistributionSplit(test_size=0.2, random_state=111) train_idx, test_idx = next(splitter.split(X=data["smiles"].tolist(), y=data.expt.tolist())) 图7:StratifiedDistributionSplit的值分布(蓝色和橙色曲线重合,保持相同分布) 高级多目标优化分割:SIMPD SIMPD(Simulated Medicinal Chemistry Project Data,模拟药物化学项目数据)是一种基于多目标遗传算法的高级数据分割方法,由ETH Zurich和诺华生物医学研究所开发。 方法原理 核心思想:模拟真实药物化学项目中的时间分割(time-split)场景。在真实的药物发现项目中,后期化合物通常在分子性质上优于早期化合物。SIMPD使用多目标遗传算法,基于对诺华130多个先导化合物优化项目的深入分析,将公开数据集分割成模拟这种早期/后期差异的训练集和测试集。 关键特征: 模拟时间演进:测试集模拟项目后期的化合物,具有更优的分子性质谱 基于真实项目经验:目标函数源自对130多个真实药物化学项目早期和后期化合物差异的广泛分析 多目标优化:同时优化8个目标,涵盖分子性质、活性分布、化学空间覆盖等多个维度 金标准替代:为缺乏真实时间序列数据的公开数据集提供了time-split验证的替代方案 应用场景 药物开发项目中后期化合物通常在分子性质谱中具有改进特征(更大分子量、新骨架、增强活性等)。SIMPD为模型泛化能力提供了稳健估计,在先导化合物优化阶段非常有价值。 八个优化目标 SIMPDSplitter选择了八个目标用于MOGA,基于NIBR药物发现项目中训练集和测试集之间描述符差异和空间统计的分析: 分子性质差异目标(1-4): $\Delta_{\text{test-train}}\text{median(SA_Score)}=0.28$ - 合成可及性评分差异 $\Delta_{\text{test-train}}\text{median(HeavyAtomCount)}=3.1$ - 重原子数差异 $\Delta_{\text{test-train}}\text{median(TPSA)}=13.2$ - 拓扑极性表面积差异 $\Delta_{\text{test-train}}\text{median(fr_benzene/1000\ HeavyAtoms)}=-8.8$ - 苯环比例差异 活性分布目标(5-6): $\text{frac}_{\text{active}}(\text{train})=\text{value from dataset}$ - 训练集活性分子比例 $\text{frac}_{\text{active}}(\text{test})=\text{value from dataset}$ - 测试集活性分子比例 空间统计目标(7-8): $10<\sum_{G}-\sum_{F’}<30$ - 控制测试集的空间聚集程度 $\sum_{G}>70$ - 确保测试集内部有足够的空间分离 其中G函数衡量测试集内部点之间的距离分布,F函数衡量测试集到训练集的距离分布,这两个空间统计指标确保训练集和测试集在化学空间中既有区分又有合理的覆盖。 代码实现 from splito.simpd import SIMPDSplitter # 初始化分割器 simpd_splitter = SIMPDSplitter( n_splits=5, pop_size=500, ngens=10, target_GF_delta_window=(10, 30), target_G_val=70 ) # 拟合数据集并分割 result = simpd_splitter.fit(data[mol_col].values, data[data_col].values) train_idx, test_idx = next(simpd_splitter.split(data[mol_col].values)) 可视化结果 图8:SIMPDSplit的UMAP嵌入可视化(蓝色=测试集,橙色=训练集,点的大小表示溶解度类别) 先导化合物优化专用分割:Lo Splitter Lo Splitter(Lead Optimization Splitter,先导化合物优化分割器)是专门为先导化合物优化阶段和分子生成任务设计的数据分割方法。 通俗理解 问题场景:假设你已经找到一个有潜力的药物分子(先导化合物),现在需要对它进行“微调”——比如把一个甲基换成乙基,或者改变一个取代基的位置。这些微小改动可能显著影响药效。 传统方法的问题:ScaffoldSplit等方法测试的是模型能否预测“完全不同骨架”的分子,但在先导优化阶段,我们更关心模型能否区分“长得很像但性质不同”的分子。 Lo Splitter的解决方案:创建由“长得很像的分子小团体”组成的测试集,每个团体保留一个分子在训练集(模拟已知的先导化合物),其余放入测试集。这样就能评估模型是否真的理解“把-CH₃换成-C₂H₅会让活性提高2倍”这种细微差异。 方法原理 Lo Splitter通过创建一个由相似分子簇组成的测试集来解决这个需求: 测试集由相似分子簇组成:每个簇包含结构相似的分子 簇内性质变化大于实验噪声:确保簇内的性质差异是真实的,而不是测量误差 每个测试簇中恰好一个分子移到训练集:模拟已知的先导化合物 这种设计使我们能够评估模型识别微小修改的能力,帮助我们选择最适合先导化合物优化或作为分子生成评分器的模型。与其他分割方法不同,Lo splitter不仅能区分不同骨架,还能“理解”不同取代基如何影响性质。 图9:Lo Splitter概念图(测试集由相似分子簇组成,每个簇保留一个分子在训练集作为已知先导) 关键参数 threshold(默认0.4):ECFP4 1024位Tanimoto相似度阈值。相似度高于此阈值的分子被认为非常相似,可以归为一个簇 min_cluster_size(默认5):每个簇的最小分子数量 max_clusters(默认50):算法在找不到更多合适的簇或达到此限制时停止 std_threshold(默认0.60):簇内标准差阈值。只选择簇内变化超过噪声变化的簇。默认值0.60是ChEMBL中logKi数据的噪声标准差。如果使用内部高质量数据,可以设置为0.2左右 代码实现 from splito.lohi import LoSplitter from scipy.stats import spearmanr # 初始化并分割 lo_splitter = LoSplitter(threshold=0.4, min_cluster_size=5, std_threshold=0.60) train_idx, cluster_idx = lo_splitter.split(data['smiles'], data['calc']) # 评估:计算每个簇内的Spearman相关系数 cluster = data.iloc[cluster_idx[0]] spearman_score = spearmanr(cluster['calc'], predict(model, cluster))[0] 评估指标:使用Spearman秩相关系数在每个簇内计算并跨簇平均,归一化后在-1(完全错误)、0(随机)和1(理想)之间。 自动选择最佳分割方法:MOOD Protocol MOOD(Multi-Objective Optimization for Dataset splitting,多目标数据集分割优化)协议是一种元方法,它能够自动选择最适合特定数据集和部署场景的分割策略。 通俗理解 问题场景:你有一堆分割方法(随机分割、骨架分割、Perimeter分割等),不知道选哪个?每个方法都声称自己好,但哪个真正适合你的项目? 部署集/部署场景:模型训练好后,在实际应用中需要预测的那些新分子。比如临床候选药物、虚拟筛选得到的化合物等。 核心思想:假设你知道模型最终要预测什么样的分子(部署场景)。MOOD的逻辑是——好的分割方法应该让测试集和未来要预测的分子”距离训练集的远近程度”相似。 类比:就像高考模拟题,好的模拟题应该和真实高考题“难度分布”相似。如果模拟题都是简单题,但高考全是难题,那模拟考高分也没用。MOOD通过计算“测试集离训练集有多远”是否接近“未来要预测的分子离训练集有多远”,来评判哪种分割方法更靠谱。 实际应用:比如你训练模型是为了预测“临床候选药物”的性质,那就应该用临床候选药物作为部署场景的参考。MOOD会帮你选择一个分割方法,使得测试集和临床候选药物在化学空间中的位置关系类似,这样测试结果更能反映模型在真实应用时的表现。 工作流程 定义部署场景:准备一组代表未来应用场景的分子(如已上市药物、临床候选药等),计算它们到训练集的距离分布(这是目标分布) 评估各种分割方法:对每种候选分割方法计算test-to-train分布 选择最佳方法:使用Jenssen-Shannon距离评分,选择与目标分布最相似的分割方法 代码实现 import splito from sklearn.model_selection import ShuffleSplit # 定义候选分割器 splitters = { "Random": ShuffleSplit(), "Scaffold": splito.ScaffoldSplit(dataset.mol.values), "Perimeter": splito.PerimeterSplit(), "MaxDissimilarity": splito.MaxDissimilaritySplit(), } # 评估并选择最佳分割方法 mood = splito.MOODSplitter(splitters) ranking = mood.fit(X=dataset_feat, X_deployment=deployment_feat) 输出示例: split representativeness best rank 0 Random 0.375938 False 4.0 1 Scaffold 0.492793 False 3.0 2 Perimeter 0.526232 False 2.0 3 MaxDissimilarity 0.552740 True 1.0 在这个例子中,对于给定的部署场景,MaxDissimilarity是最具代表性的分割方法,能够最好地模拟部署时的数据分布特征。 Q&A Q1: 什么时候应该使用骨架分割而不是随机分割? A1: 当您的数据集中包含多个不同的骨架系列(骨架多样性高)时,骨架分割特别有用。它确保模型在从未见过的骨架上进行测试,这对于评估模型泛化到新化学结构的能力至关重要。典型场景是先导化合物优化阶段,此时有多个不同骨架的先进分子系列需要优化。如果数据集中只有一个或少数几个骨架,骨架分割就没有意义了。 Q2: PerimeterSplit和MaxDissimilaritySplit有什么区别? A2: PerimeterSplit选择分布边缘的分子,MaxDissimilaritySplit最大化训练集和测试集的总体不相似性。两者算法实现不同,但都旨在提高模型泛化能力。 Q3: SIMPDSplitter的计算成本很高,值得使用吗? A3: SIMPD确实需要较多计算资源,但在先导化合物优化阶段非常有价值,能够模拟真实项目中分子特征的演变,提供更现实的泛化能力估计。 Q4: 如何选择适合我项目的分割方法? A4: 考虑数据集特征(骨架多样性)、项目阶段(早期发现vs先导化合物优化)、预期目标(新骨架vs微小修饰)和计算资源。 Q5: 分割比例通常设置为多少合适? A5: 常用的分割比例是80/20(训练集/测试集)或70/30。但具体比例应考虑数据集大小、项目需求和分割方法的特性。 Q6: Lo Splitter与其他分割方法的主要区别是什么? A6: Lo Splitter独特之处在于它创建的测试集由相似分子簇组成,专门评估模型对微小结构修饰的敏感度。这与其他方法(如骨架分割)测试新骨架的泛化能力完全不同。Lo Splitter特别适合先导化合物优化阶段和分子生成任务。 Q7: 什么时候应该使用MOOD Protocol? A7: 当不确定使用哪种分割方法、且有明确的未来应用场景(如知道模型最终要预测什么类型的分子)时使用MOOD。例如,如果你知道模型将用于预测临床候选药物,就可以用MOOD来选择最合适的分割方法。 关键结论与批判性总结 splito库为生命科学领域的数据分割提供了强大而灵活的工具。通过系统性地理解各种分割方法的原理和应用场景,研究人员可以选择最适合其特定需求的策略。 通过合理选择和应用splito中的数据分割方法,研究人员可以更准确地评估机器学习模型的泛化能力,从而加速药物发现进程并提高研究质量。
Machine Learning & AI
· 2025-11-14
分子性质预测:机器学习回归算法详解(二)树模型与梯度提升
分子性质预测:机器学习回归算法详解(二)树模型与梯度提升 系列导航: 第一篇:基础回归模型 - 线性模型、支持向量机、近邻方法 第二篇:树模型与梯度提升(本文)- 决策树、随机森林、XGBoost/LightGBM等 第三篇:高级模型与应用指南 - 神经网络、概率模型、VAE、模型选择指南 导读 树模型和梯度提升是实战中最常用的回归方法,在Kaggle竞赛和工业界都有着广泛应用。本篇将详细介绍: 决策树与随机森林:从单棵树到集成学习 梯度提升家族:GradientBoosting、XGBoost、LightGBM、CatBoost等 模型对比:帮助你选择最合适的树模型 这些模型在分子性质预测、药物筛选等任务中表现优异,通常能达到最佳性能。 1. 决策树与随机森林 1.1 DecisionTreeRegressor(决策树回归器) 核心思想:通过一系列if-else规则递归划分特征空间。 sklearn实现:from sklearn.tree import DecisionTreeRegressor 分裂准则(回归): \(\text{MSE} = \frac{1}{N}\sum_{i=1}^{N}(y_i - \bar{y})^2\) 每次选择使得子节点MSE之和最小的特征和阈值进行分裂。 特点: ✅ 极高可解释性:决策路径清晰可视化 ✅ 自动特征交互:无需手动构造交叉项 ✅ 处理缺失值:部分实现支持 ❌ 容易过拟合:需要剪枝或限制深度 ⚙️ 关键参数: max_depth:树的最大深度(防止过拟合) min_samples_split:分裂节点所需最小样本数 min_samples_leaf:叶子节点最小样本数 📊 推荐场景:需要解释性的分子性质预测 1.2 RandomForestRegressor(随机森林回归器) 核心思想:训练多棵决策树,通过Bagging + 特征随机采样降低方差。 sklearn实现:from sklearn.ensemble import RandomForestRegressor 算法流程: Bootstrap采样:从训练集中有放回抽取 $N$ 个样本 特征随机:每次分裂只考虑随机选择的 $\sqrt{p}$ 个特征 独立训练每棵树 预测时取所有树的平均值 特点: ✅ 强大泛化能力:集成学习减少过拟合 ✅ 特征重要性:可自动评估特征贡献度 ✅ 鲁棒性强:对噪声和异常值不敏感 ✅ 并行训练:各棵树独立,GPU加速友好 ⚙️ 关键参数: n_estimators:树的数量(通常100-500) max_features:分裂时考虑的特征数(默认 $\sqrt{p}$) max_depth:树的最大深度 📊 推荐场景:通用首选,平衡性能与速度的分子性质预测 1.3 ExtraTreesRegressor(极端随机树回归器) 与随机森林的区别: 不使用Bootstrap采样,使用全部训练数据 分裂阈值完全随机选择(而非最优阈值) sklearn实现:from sklearn.ensemble import ExtraTreesRegressor 特点: ✅ 训练更快:省去阈值搜索步骤 ✅ 更低方差:更强的随机性 📊 推荐场景:大规模分子数据集,追求训练速度 1.4 决策树与随机森林家族综合对比 模型 sklearn实现 核心优势 局限性 计算复杂度 训练速度 推荐场景 DecisionTreeRegressor DecisionTreeRegressor 极高可解释性,自动特征交互 容易过拟合 $O(n \log n)$ 快 需要解释性的回归任务 RandomForestRegressor RandomForestRegressor 强大泛化,特征重要性,鲁棒 内存占用大 $O(M \cdot n \log n)$ 中 通用首选回归模型 ExtraTreesRegressor ExtraTreesRegressor 训练快,方差低 随机性大 $O(M \cdot n \log n)$ 快 大规模数据,追求训练速度 对比要点: 训练速度:ExtraTrees > RandomForest > DecisionTree 预测速度:DecisionTree > RandomForest ≈ ExtraTrees 内存占用:DecisionTree < ExtraTrees < RandomForest 过拟合风险:DecisionTree > RandomForest ≈ ExtraTrees 2. 梯度提升家族 2.1 核心思想 梯度提升(Gradient Boosting)通过串行训练多个弱学习器,每个新模型专注于拟合前一个模型的残差(或梯度)。 2.2 GradientBoostingRegressor(标准梯度提升回归器) sklearn实现:from sklearn.ensemble import GradientBoostingRegressor 算法流程: 初始化 $F_0(\mathbf{x}) = \bar{y}$ 对 $m = 1, 2, \ldots, M$: 计算负梯度(伪残差):$r_{im} = -\frac{\partial L(y_i, F(\mathbf{x}_i))}{\partial F(\mathbf{x}_i)}$ 训练决策树 $h_m$ 拟合 $r_{im}$ 更新模型:$F_m(\mathbf{x}) = F_{m-1}(\mathbf{x}) + \nu \cdot h_m(\mathbf{x})$ 其中 $\nu$ 是学习率。 特点: ✅ 高准确性:通常优于随机森林 ✅ 灵活损失函数:支持多种回归任务 ❌ 训练缓慢:串行训练无法并行 ❌ 易过拟合:需要精细调参 ⚙️ 关键参数: learning_rate:学习率(0.01-0.3) n_estimators:迭代次数 max_depth:树深度(通常3-8) 2.3 XGBoostRegressor(极端梯度提升回归器) 创新点: 二阶泰勒展开:使用一阶和二阶梯度信息 正则化:在目标函数中加入树复杂度惩罚 列采样:借鉴随机森林的特征采样 工程优化:并行化、缓存优化、GPU加速 sklearn实现:from xgboost import XGBRegressor 目标函数: \(\mathcal{L} = \sum_{i=1}^{n}l(y_i, \hat{y}_i) + \sum_{k=1}^{K}\Omega(f_k)\) 其中 $\Omega(f_k) = \gamma T + \frac{1}{2}\lambda|\mathbf{w}|^2$($T$ 为叶子节点数,$\mathbf{w}$ 为叶子权重)。 特点: ✅ Kaggle神器:竞赛中最常用模型之一 ✅ 处理缺失值:自动学习缺失值的最优方向 ✅ 速度快:高效工程实现 ⚙️ 独特参数: subsample:行采样比例 colsample_bytree:列采样比例 reg_alpha, reg_lambda:L1/L2正则化 📊 推荐场景:追求极致性能的分子性质预测 2.4 LGBMRegressor(轻量级梯度提升回归器) 创新点: GOSS(Gradient-based One-Side Sampling):保留大梯度样本,随机采样小梯度样本 EFB(Exclusive Feature Bundling):互斥特征打包,减少特征维度 Leaf-wise生长:按叶子节点最大增益生长(而非level-wise) sklearn实现:from lightgbm import LGBMRegressor 特点: ✅ 训练极快:大数据集上比XGBoost快5-10倍 ✅ 内存占用低:特征打包技术 ✅ 高准确性:与XGBoost相当或更好 ⚠️ 易过拟合:Leaf-wise策略在小数据集上需要谨慎 ⚙️ 独特参数: num_leaves:最大叶子节点数(核心参数) min_data_in_leaf:叶子最小样本数 📊 推荐场景:大规模分子数据库(>10万样本) 2.5 CatBoostRegressor(类别提升回归器) 创新点: Ordered Boosting:解决梯度估计偏差问题 原生支持类别特征:自动处理类别编码 对称树:减少预测时间 sklearn实现:from catboost import CatBoostRegressor 特点: ✅ 开箱即用:默认参数表现优异 ✅ 鲁棒性强:对参数不敏感 ✅ 处理类别特征:SMILES子结构等类别信息 ❌ 训练稍慢:相比LightGBM 📊 推荐场景:混合特征(连续+类别)的分子数据 2.6 HistGradientBoostingRegressor(直方图梯度提升回归器) sklearn实现:from sklearn.ensemble import HistGradientBoostingRegressor 特点: ✅ 原生支持缺失值:无需预处理 ✅ 速度快:基于直方图的分裂 ✅ 无需安装额外库:scikit-learn自带 📊 推荐场景:快速原型开发,不需要额外依赖的回归任务 2.7 AdaBoostRegressor(自适应提升回归器) 核心思想:每轮增加错误样本的权重,强迫后续模型关注难分样本。 sklearn实现:from sklearn.ensemble import AdaBoostRegressor 特点: ✅ 简单有效:历史悠久,理论成熟 ❌ 对噪声敏感:异常值会被过度关注 📊 推荐场景:数据质量高的回归问题 2.8 梯度提升家族综合对比 模型 sklearn实现 核心优势 训练方式 正则化 特征采样 适用数据规模 计算效率 推荐场景 GradientBoostingRegressor GradientBoostingRegressor 理论成熟,灵活损失函数 串行 无 ❌ 小-中数据集 低 需要精细调参的回归 XGBRegressor XGBRegressor 竞赛级性能,工程优化好 串行 ✓ ✓ 中-大数据集 高 追求极致性能的回归 LGBMRegressor LGBMRegressor 训练极快,内存效率高 串行 ✓ ✓ 大-超大数据集 极高 大数据集回归首选 CatBoostRegressor CatBoostRegressor 开箱即用,处理类别特征 串行 ✓ ❌ 小-中数据集 中 混合特征的回归 HistGradientBoostingRegressor HistGradientBoostingRegressor 原生支持缺失值,sklearn自带 串行 ✓ ✓ 中-大数据集 高 快速原型开发 AdaBoostRegressor AdaBoostRegressor 简单有效,历史悠久 串行 ❌ ❌ 小数据集 低 数据质量高的回归 对比要点: 训练速度:LGBM > HistGB > XGB > CatBoost > GB > AdaBoost 内存效率:LGBM > HistGB > XGB > GB ≈ CatBoost > AdaBoost 大数据适应性:LGBM > XGB > HistGB > CatBoost > GB > AdaBoost 小数据表现:AdaBoost > CatBoost > GB > XGB ≈ HistGB > LGBM 类别特征处理:CatBoost > XGB ≈ LGBM > HistGB > GB > AdaBoost 3. 树模型实战建议 3.1 参数调优策略 随机森林调参顺序: n_estimators:先设置一个足够大的值(如500) max_depth:从5开始逐步增加 min_samples_split 和 min_samples_leaf:防止过拟合 max_features:默认 $\sqrt{p}$ 通常已经很好 梯度提升调参顺序: n_estimators 和 learning_rate:两者成反比,先固定一个 max_depth:通常3-8之间 正则化参数:reg_alpha, reg_lambda(XGBoost/LightGBM) 采样参数:subsample, colsample_bytree 3.2 性能优化技巧 训练速度优化: 使用LightGBM替代XGBoost(大数据集) 减少 n_estimators,增加 learning_rate 限制 max_depth 使用GPU版本(XGBoost/LightGBM) 内存优化: 减少 n_estimators(随机森林) 使用 max_bins 参数(LightGBM) 特征选择,降维 过拟合防止: 增加 min_samples_leaf(随机森林) 减小 learning_rate,增加 n_estimators(梯度提升) 使用正则化参数 Early stopping(梯度提升) 本篇小结 第二篇介绍了实战中最常用的树模型和梯度提升方法: ✅ 决策树与随机森林:从单棵树的高可解释性,到随机森林的强大泛化能力,再到极端随机树的训练速度优势 ✅ 梯度提升家族:从经典的GradientBoosting,到竞赛神器XGBoost,再到大数据杀手LightGBM,以及开箱即用的CatBoost 这些模型的共同特点: 准确性高:通常能达到最佳性能 特征工程简单:自动处理特征交互 鲁棒性强:对异常值和噪声不敏感 实战建议: 快速原型:RandomForest 追求极致性能:XGBoost或LightGBM 大数据集:LightGBM 类别特征多:CatBoost 需要解释性:DecisionTree或RandomForest(feature_importances_) 下一篇将介绍神经网络、概率模型、深度生成模型(VAE),以及完整的模型选择指南,帮助你在实际项目中做出最佳选择。 参考资料 Scikit-learn Documentation: https://scikit-learn.org/ XGBoost Documentation: https://xgboost.readthedocs.io/ LightGBM Documentation: https://lightgbm.readthedocs.io/ CatBoost Documentation: https://catboost.ai/docs/ Breiman (2001). “Random Forests” Chen & Guestrin (2016). “XGBoost: A Scalable Tree Boosting System” Ke et al. (2017). “LightGBM: A Highly Efficient Gradient Boosting Decision Tree”
Machine Learning & AI
· 2025-11-10
分子性质预测:机器学习回归算法详解(一)基础回归模型
分子性质预测:机器学习回归算法详解(一)基础回归模型 系列导航: 第一篇:基础回归模型(本文)- 线性模型、支持向量机、近邻方法 第二篇:树模型与梯度提升 - 决策树、随机森林、XGBoost/LightGBM等 第三篇:高级模型与应用指南 - 神经网络、概率模型、VAE、模型选择指南 导读 在分子性质预测、药物筛选、材料设计等回归任务中,选对机器学习模型至关重要。本系列文章将介绍30余种经典和前沿的回归算法,剖析每个模型的原理、公式和适用场景。 第一篇聚焦基础回归模型,这些模型是理解现代机器学习的基石: 线性模型家族:从简单的线性回归到鲁棒回归、广义线性模型 支持向量回归:处理非线性关系的经典方法 近邻方法:基于相似性的简单有效算法 所有模型均基于scikit-learn实现,可直接用于实践。 1. 线性模型家族 1.1 核心思想 线性模型假设输入特征与目标值之间存在线性关系,通过学习特征权重来进行预测。这是最基础也是最可解释的模型类型。 1.2 基础线性模型 LinearRegression(线性回归器) 原理:最小化预测值与真实值之间的平方误差。 sklearn实现:from sklearn.linear_model import LinearRegression 数学公式: \(\hat{y} = w_0 + w_1x_1 + w_2x_2 + \cdots + w_nx_n = \mathbf{w}^T\mathbf{x}\) \[\min_{\mathbf{w}} \sum_{i=1}^{m} (y_i - \mathbf{w}^T\mathbf{x}_i)^2\] 特点: ✅ 快速训练:解析解,无需迭代 ✅ 高度可解释:每个特征的权重清晰可见 ❌ 容易过拟合:高维数据时权重不稳定 📊 推荐场景:分子性质预测的baseline模型 Ridge(岭回归器) 原理:在线性回归基础上加入L2正则化,防止权重过大。 sklearn实现:from sklearn.linear_model import Ridge 数学公式: \(\min_{\mathbf{w}} \sum_{i=1}^{m} (y_i - \mathbf{w}^T\mathbf{x}_i)^2 + \alpha \|\mathbf{w}\|_2^2\) 特点: ✅ 缓解共线性:相关特征的权重更稳定 ✅ 防止过拟合:正则化参数 $\alpha$ 控制模型复杂度 📊 推荐场景:特征数量接近或超过样本数量的高维分子数据 Lasso(套索回归器) 原理:使用L1正则化,可将部分特征权重压缩为0,实现特征选择。 sklearn实现:from sklearn.linear_model import Lasso 数学公式: \(\min_{\mathbf{w}} \sum_{i=1}^{m} (y_i - \mathbf{w}^T\mathbf{x}_i)^2 + \alpha \|\mathbf{w}\|_1\) 特点: ✅ 自动特征选择:不重要的特征权重为0 ✅ 稀疏解:结果更简洁易懂 📊 推荐场景:需要识别关键分子描述符时 ElasticNet(弹性网络回归器) 原理:结合L1和L2正则化,平衡两者优势。 sklearn实现:from sklearn.linear_model import ElasticNet 数学公式: \(\min_{\mathbf{w}} \sum_{i=1}^{m} (y_i - \mathbf{w}^T\mathbf{x}_i)^2 + \alpha \rho \|\mathbf{w}\|_1 + \frac{\alpha(1-\rho)}{2} \|\mathbf{w}\|_2^2\) 其中 $\rho$ 控制L1和L2的比例。 特点: ✅ 综合优势:既能特征选择又能处理共线性 ✅ 灵活调节:通过 $\rho$ 调整L1/L2权重 📊 推荐场景:复杂分子数据集的通用首选回归器 SGDRegressor(随机梯度下降回归器) 原理:通过逐样本更新权重实现在线学习,适合超大规模数据。 sklearn实现:from sklearn.linear_model import SGDRegressor 特点: ✅ 内存高效:无需一次加载所有数据 ✅ 支持在线学习:数据流式更新模型 ⚡ 快速收敛:大数据集训练速度快 📊 推荐场景:大规模分子数据库的增量学习 1.3 鲁棒回归家族 当数据中存在异常值或重尾噪声时,标准最小二乘法会失效。鲁棒回归模型通过特殊的损失函数降低异常值的影响。 HuberRegressor(胡伯回归器) 损失函数: \(L_\delta(r) = \begin{cases} \frac{1}{2}r^2 & |r| \leq \delta \\ \delta(|r| - \frac{1}{2}\delta) & |r| > \delta \end{cases}\) 小误差用平方损失(L2),大误差用绝对值损失(L1),平衡效率和鲁棒性。 sklearn实现:from sklearn.linear_model import HuberRegressor 特点: ✅ 对中等异常值鲁棒:适度降低离群点影响 ⚙️ 关键参数:epsilon(平方/线性损失转换点,默认1.35) 📊 推荐场景:包含中等异常值的分子性质回归 TheilSenRegressor(西尔森回归器) 核心思想:基于样本对斜率的中位数估计,对异常值具有极强鲁棒性。 sklearn实现:from sklearn.linear_model import TheilSenRegressor 特点: ✅ 极强鲁棒性:可容忍29.3%的异常值 ❌ 仅适用低维:特征数 <20 ❌ 计算复杂度高:$O(n^2)$ 📊 推荐场景:实验数据质量差,离群点多的分子性质回归 RANSACRegressor(随机采样一致性回归器) 核心思想:随机采样一致性(Random Sample Consensus)算法,通过迭代随机采样找到最优内点集。 sklearn实现:from sklearn.linear_model import RANSACRegressor 算法流程: 随机采样最小样本集,拟合模型 计算所有样本的残差 将残差小于阈值的样本标记为内点 重复1-3,选择内点最多的模型 使用所有内点重新拟合最终模型 特点: ✅ 极强鲁棒性:可处理>50%异常值 ❌ 不确定性高:随机算法,结果有波动 ⚙️ 关键参数: residual_threshold:内点阈值 max_trials:迭代次数 📊 推荐场景:严重污染数据,如高通量分子筛选的批次效应 QuantileRegressor(分位数回归器) 核心思想:不预测均值,而是预测条件分位数。 sklearn实现:from sklearn.ensemble import GradientBoostingRegressor(设置loss=’quantile’) 损失函数($\tau$-分位数): \(L_\tau(r) = \begin{cases} \tau r & r \geq 0 \\ (\tau - 1)r & r < 0 \end{cases}\) 特点: ✅ 对异常值不敏感:中位数回归($\tau=0.5$)特别鲁棒 ✅ 不确定性量化:通过多个分位数(如0.1, 0.5, 0.9)给出预测区间 ⚙️ 关键参数:quantile(目标分位数,0-1之间) 📊 推荐场景:关注分布尾部,如毒性阈值预测 1.4 广义线性模型家族 当响应变量不服从正态分布时,广义线性模型(GLM)通过链接函数将线性预测器映射到合适的分布空间。 PoissonRegressor(泊松回归器) 适用场景:计数数据(非负整数)。 sklearn实现:from sklearn.linear_model import PoissonRegressor 模型: \(\log(\mu) = \mathbf{w}^T\mathbf{x}\) \(y \sim \text{Poisson}(\mu)\) 特点: ✅ 适合计数型目标:如分子中特定基团数量 📊 推荐场景:预测计数型分子属性 GammaRegressor(伽马回归器) 适用场景:正偏态连续数据(如溶解度、半衰期)。 sklearn实现:from sklearn.linear_model import GammaRegressor 模型: \(\log(\mu) = \mathbf{w}^T\mathbf{x}\) \(y \sim \text{Gamma}(\mu, \alpha)\) 特点: ✅ 适合右偏数据:常见于物理化学性质 📊 推荐场景:药代动力学参数(清除率、分布体积等) TweedieRegressor(特威迪回归器) 适用场景:混合分布(包含零值和正连续值)。 sklearn实现:from sklearn.linear_model import TweedieRegressor 特点: ✅ 灵活分布:通过 power 参数调整分布形态 power=0:正态分布 power=1:泊松分布 power=2:伽马分布 1<power<2:复合泊松-伽马分布 📊 推荐场景:高通量分子筛选数据 1.5 概率线性模型 BayesianRidge(贝叶斯岭回归器) 核心思想:将权重视为随机变量,使用概率分布表示不确定性。 sklearn实现:from sklearn.linear_model import BayesianRidge 贝叶斯推断: \(p(\mathbf{w}|\mathcal{D}) \propto p(\mathcal{D}|\mathbf{w})p(\mathbf{w})\) 特点: ✅ 自动确定正则化强度:无需手动调参 ✅ 提供不确定性估计:预测值带置信区间 📊 推荐场景:小样本、需要置信度的药物早期回归研究 ARDRegressor(自动相关性判定回归器) 核心思想:为每个特征赋予独立的精度参数,自动判定特征相关性。 sklearn实现:from sklearn.linear_model import ARDRegression 特点: ✅ 极致特征选择:不相关特征的权重精确为0 ✅ 贝叶斯框架:自动正则化 📊 推荐场景:超高维稀疏分子描述符数据 1.6 线性模型家族综合对比 模型 sklearn实现 核心优势 局限性 计算复杂度 推荐场景 LinearRegression LinearRegression 简单快速,解析解 对异常值敏感 $O(n^3)$ 基准回归模型 Ridge Ridge 缓解共线性,防止过拟合 需要调参$\alpha$ $O(n^3)$ 高维数据 Lasso Lasso 自动特征选择,稀疏解 特征间相关性高时表现差 $O(n^3)$ 特征选择 ElasticNet ElasticNet 兼顾L1/L2优势 需要调参$\alpha, \rho$ $O(n^3)$ 复杂数据通用 SGDRegressor SGDRegressor 内存高效,支持在线学习 需要调参学习率 $O(n)$ 大数据流 BayesianRidge BayesianRidge 自动正则化,提供不确定性 计算较慢 $O(n^3)$ 小样本 ARDRegressor ARDRegressor 极致特征选择 仅适用稀疏数据 $O(n^3)$ 超高维稀疏 HuberRegressor HuberRegressor 对中等异常值鲁棒 需要调参$\epsilon$ $O(n^3)$ 含离群点 TheilSenRegressor TheilSenRegressor 极强鲁棒性 仅适用低维,计算慢 $O(n^2)$ 严重污染数据 RANSACRegressor RANSACRegressor 可处理>50%异常值 结果不稳定,随机性 $O(k \cdot n^2)$ 严重污染数据 QuantileRegressor QuantileRegressor 预测分位数,不敏感 计算慢,需调参$\tau$ $O(n \cdot \log n)$ 需要预测区间 PoissonRegressor PoissonRegressor 适合计数数据 仅适用非负整数 $O(n^3)$ 分子计数属性 GammaRegressor GammaRegressor 适合正偏态数据 仅适用正连续值 $O(n^3)$ 物理化学性质 TweedieRegressor TweedieRegressor 灵活分布形态 需要调参power $O(n^3)$ 高通量筛选 2. 支持向量机 2.1 核心思想 支持向量回归(SVR)通过最大间隔回归来拟合数据,通过核函数可处理非线性回归问题。 2.2 SVR(支持向量回归器) 原理:容忍预测值在真实值 $\pm \epsilon$ 范围内的误差,只惩罚超出此范围的样本。 sklearn实现:from sklearn.svm import SVR 数学公式: \(\min_{\mathbf{w}} \frac{1}{2}\|\mathbf{w}\|^2 + C\sum_{i=1}^{m}\max(0, |y_i - \mathbf{w}^T\mathbf{x}_i| - \epsilon)\) 核函数技巧: Linear Kernel:$K(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{x}_i^T\mathbf{x}_j$ RBF Kernel:$K(\mathbf{x}_i, \mathbf{x}_j) = \exp(-\gamma|\mathbf{x}_i - \mathbf{x}_j|^2)$ Polynomial Kernel:$K(\mathbf{x}_i, \mathbf{x}_j) = (\gamma\mathbf{x}_i^T\mathbf{x}_j + r)^d$ 特点: ✅ 处理非线性:RBF核可拟合复杂回归关系 ✅ 鲁棒性强:对异常值不敏感($\epsilon$-insensitive) ❌ 训练缓慢:大数据集(>10^4样本)计算成本高 ⚙️ 关键参数: C:正则化强度(越大越拟合训练数据) gamma:RBF核的宽度(越大越关注近邻样本) epsilon:容忍误差范围 📊 推荐场景:复杂非线性分子性质预测 3. 近邻方法 3.1 K-Nearest Neighbors(K近邻回归器) 核心思想:预测值由距离最近的 $k$ 个样本的平均值决定。 sklearn实现:from sklearn.neighbors import KNeighborsRegressor 数学公式(回归): \(\hat{y} = \frac{1}{k}\sum_{i \in \mathcal{N}_k(\mathbf{x})} y_i\) 其中 $\mathcal{N}_k(\mathbf{x})$ 是距离 $\mathbf{x}$ 最近的 $k$ 个样本集合。 距离度量: Euclidean Distance:$d(\mathbf{x}_i, \mathbf{x}_j) = |\mathbf{x}_i - \mathbf{x}_j|_2$ Manhattan Distance:$d(\mathbf{x}_i, \mathbf{x}_j) = |\mathbf{x}_i - \mathbf{x}_j|_1$ 特点: ✅ 零训练时间:惰性学习,无需训练过程 ✅ 天然处理非线性:基于局部信息 ❌ 预测缓慢:需要计算与所有训练样本的距离 ❌ 对特征缩放敏感:建议先标准化 ⚙️ 关键参数: n_neighbors:近邻数量(通常5-15) weights:uniform(等权)或 distance(距离加权) 📊 推荐场景:小数据集快速baseline,分子相似性搜索 本篇小结 第一篇介绍了机器学习回归的基础模型: ✅ 线性模型家族:从基础的线性回归、岭回归、Lasso,到鲁棒回归(Huber、TheilSen、RANSAC)、广义线性模型(Poisson、Gamma、Tweedie)和概率模型(BayesianRidge、ARD),形成了完整的线性回归工具箱 ✅ 支持向量回归:通过核函数处理非线性关系,是小样本高维数据的经典选择 ✅ 近邻方法:基于相似性的简单有效算法,零训练时间,适合快速原型 这些基础模型具有以下共同优势: 训练速度快:适合快速建立baseline 高度可解释:特别是线性模型,权重清晰可见 理论成熟:经过数十年验证,稳定可靠 下一篇将介绍实战中最常用的树模型与梯度提升方法,包括随机森林、XGBoost、LightGBM等竞赛级模型。
Machine Learning & AI
· 2025-11-10
人工智能必须更科学:让AI与科学方法兼容
人工智能必须更科学:让AI与科学方法兼容 本文信息 标题: 人工智能必须更“科学”:让AI与科学方法兼容 作者: Peter V. Coveney, Roger Highfield 发表时间: 2024年7月27日 单位: University College London(英国);University of Amsterdam(荷兰);Ludwig Maximilian University of Munich(德国);Science Museum London(英国);University of Oxford(英国) 引用格式: Coveney, P. V., & Highfield, R. (2024). Artificial Intelligence Must Be Made More Scientific. Journal of Chemical Information and Modeling, 64(13), 5739–5741. https://doi.org/10.1021/acs.jcim.4c01091 摘要 随着人工智能在科研中的作用不断扩大,作者评估了其对研究实践的影响,指出当前一代AI缺乏可重复性、缺乏透明性、缺乏客观性以及缺乏机制层面的理解。文章强调,科学的核心在于经验与理性的统一,通过理论与实验的循环推动知识进步;而当下许多AI系统更多停留在统计拟合与相关性层面,难以提供可解释的不确定性与因果机制。作者以AlphaFold与机器学习势能(MLIP)为例,比较了基于物理的模型与纯数据驱动方法在不确定性量化与参数可解释性上的差异;讨论了生成式方法与大模型在再现性、数据依赖与人类偏见方面的局限。为使AI真正惠及科学研究,作者主张发展与科学方法完全兼容的AI形态,包括可解释AI、因果AI与与物理定律耦合的Big AI。 核心结论 AI要服务科学,必须满足可重复性、透明性、客观性与机制解释 单纯基于相关性的黑箱模型难以量化不确定性,也难以支撑科学理解 与物理约束、可解释机制和因果推断相结合的AI更接近科学方法 科学共同体需要对AI提出更高标准,而非被炒作与功利目标牵引 全文翻译 人工智能在科学中的作用与日俱增。我们在此评估其对研究的影响,并指出AI常常缺少可重复性、透明性、客观性与机制层面的理解。要确保AI真正造福研究,我们需要发展与科学方法完全兼容的AI形式。 人工智能正在深入科学,尽管它距离媒体标题中更离奇的宣称还有很长的路。但它是否改变了我们对科学的理解?答案是一个明确的不会。在许多方面,当前一代AI甚至谈不上科学。 关于科学的确切定义,哲学家与科学史家存在分歧,但普遍共识是:科学是观察与理性的融合。极端经验主义(只有数据没有理论)与极端理性主义(只有理论没有数据)早在几个世纪前就被摒弃了。取而代之,科学家将理论用于做出预测并引导新实验,通过实验产出数据以塑造理论,周而复始。可重复性被赋予极高权重,这保证了科学的客观性,也使其区别于其他人类活动。 几百年前,培根用“蜜蜂”比喻科学家如何滋养理性与经验的共生。随着计算机兴起,另一种科学形态兴起:模拟能够给出可操作的预测。将描述我们对大气与海洋理解的数学模型,与来自卫星与地面站的数据结合,就能进行挽救生命的天气预报。面向未来的最具代表性的例子,是人体的数字孪生。 如今我们进入计算的新纪元,AI的重要性不断上升。然而少有人记得此前的炒作与低谷周期。我们也常忘记,人类 20 瓦的大脑能力依然惊人,哪怕与耗能高出一百万倍的百亿亿次超级计算机相比亦然。令人尴尬的是,关于“自然智能”的公认定义并不存在,那么我们所谓的“AI”究竟指什么?我们对计算机寄予了过度信任。 尽管有这些问题,美国大型科技公司仍在做出大胆甚至夸张的宣称。它们有一个压倒性的动机:盈利。大型机构因害怕错过风口而争相拥抱AI。政府也乐于上车,指望AI让其更有效率、更有说服力。 一些最狂热的追随者宣称,计算机算法可以超越人类智能,机器能够接管人类的许多职能。具有讽刺意味的是,其中一些最夸张的说法来自那些依赖大规模众包劳工的公司——贝索斯称之为人工的人工智能或伪AI,用来帮助AI完成繁琐却棘手的任务。 人们懒于思考地假设AI也可以做科学。但机器学习方法过去与现在本质上都是模式发现者,旨在解决工程技术问题。它们的起源更多与情报与安全部门有关,目标是让计算机从海量数据中筛选线索,而非让科学家理解自然。 在这个领域AI当然能发挥作用。最著名的例子或许是蛋白质结构预测软件AlphaFold,它绘制了几乎所有已知蛋白的“结构宇宙”。对分子生物学家来说,AlphaFold是X射线晶体学的快速替代。和许多机器学习一样,AlphaFold最擅长处理它被训练“见过”的模式。但由于本质上接近“查找表”,我们很难判断它在什么情况下可靠、在什么情况下会失效。换言之,量化它的不确定性很困难。 另一个热门话题是用AI学习相互作用势能(MLIP),以供经典分子动力学仿真。决定这些势函数的形式或参数化是繁琐的,因此有人提出用AI从尽可能大的数据集中学习从原子性质到分子势能或其他量的映射。这会得到一个拥有几十万个拟合参数的神经网络——这些参数是神经元之间的连接权重。同样地,量化这类MLIP的不确定性很难,原因有二:参数数量过多,且这些参数只是拟合参数,没有内在的物理化学含义。 事实上,我们对分子相互作用的科学理解已经很成熟。因而也可以采用基于物理的相互作用势,其项具有明确的科学意义,参数数量从数百到几千不等。借助可扩展的不确定性量化方法,人们发现通常只有 10 到 20 个力场参数对目标性质具有显著影响。换句话说,我们能够获得哪些参数重要的真实洞见与理解。 相比之下,我们很难理解MLIP或AlphaFold内部发生了什么。这些系统需要从几十万到上亿级的参数。一方面,天文数量级的参数解释了为何机器学习能够拟合大量任意关系;另一方面,这也导致其不可靠,且无法给出令人满意的科学解释。 此外,它们通常在选定的数据集上训练,再以较小的验证集做评估。但换一个数据集,它们是否仍然有效?很多时候并不行,因为此时模型在做外推而非内插。 生成式方法存在类似问题,且更依赖随机数发生器,因此更进一步地说,代码每次运行都会给出不同答案。这让人联想到分子动力学:一次性模拟不可复现。可重复性还面临其他挑战,包括获取底层数据与机器学习算法的渠道,这些可能被保密,且有时还需要大量算力的支持。 科学追求的是理解,而AI依赖的是统计推断。这并非错误本身,但请记住:相关并不等于因果。借助遍历性、拉姆齐理论与算法信息论,可以证明:大数据库中会包含任意多的相关性,且相关性的数量随着数据量而快速增加,而非随着数据“本质”的改变而变化。即使在随机生成的超大数据库中也会涌现大量相关性,这意味着大多数相关性是伪的。要从中筛出真正的相关性,需要科学方法。 尽管计算机创造了“客观性”的表象,人仍然在AI的建立与使用中居于核心。大多数情况下,为了训练AI,你必须预先定义AI将把答案归入的类别。但任何这种分类都是任意的、歧义丛生,反映开发者自身的动机:人类偏见被烘焙进AI之中,在训练之前就已存在。 AI通常建立在一系列也体现人类选择的假设之上,而非源于科学。例如,几乎所有机器学习算法都假设内部数据分析变量之间的关系是平滑可微的。这纯粹出于方便,便于使用线性代数、标准软件库以及GPU加速。然而,AI与机器学习确实能产生各种非线性预测。这是因为在以线性代数为主的同时,它们加入了将输入映射到输出的非线性激活函数。 如果我们自我安慰地假定世界处处可微,就可能进一步假定:在浮点数表示上从双精度退到半精度乃至四分之一精度牺牲一点精确度无关紧要,或者高斯统计的钟形曲线是无所不能的。在真实世界中,这些假设通常不成立。尖锐的不连续广泛存在,这是非线性行为的标志。 归根结底,世界高度是非线性的。因为非线性科学直觉上难以把握且往往不可微,人们会倾向于回避它。非线性的极端表现之一是:舍入误差会在数字计算机中引发深远影响——这一点常被忽视。 可以理解,为什么一些科学家把AI当作替代培根蜜蜂的方案:在诸如生命科学这样的复杂领域,AI对答案的追逐而非对理解的追求,的确具有诱惑力。但在医疗等领域,这是不可接受的。我们必须理解治疗方案如何起作用,且消除其内在偏见——不仅是训练数据的代表性问题,还包括AI系统在设计之初的偏见。 一些人对新一波基础模型的兴奋在增长。这些通用目的AI被宣传为可以通过类似聊天界面的交互来解决科学家的问题。所谓AI4Science的例子包括用于分子分布的DiG、无机材料设计的MatterGen、以及目标感知分子生成的TamGen。 当这些模型雨点般出现时,我们不应放弃科学的堡垒。相反,是时候要求AI与机器学习遵循最高标准的科学探索。我们需要把重点放在可重复性上,更重要的是强调提供机制洞见与理解的理论概念与方法。 AI无疑能给科学带来巨大益处,但我们绝不可背离三百年来经受考验的理性与经验的可重复融合。一条可行路径是可解释AI,另一条是我们应拥抱因果AI;前提是AI能够以科学术语解释其内部机理与预测。第三条路径是Big AI,即将机器学习与基于物理的方法结合,使AI受自然规律约束。在这些语境下,二者的优缺点相辅相成,在药物发现等任务中结合更可能奏效。 科学是人类最珍贵的创造之一,比以往任何时候都更需要捍卫与阐明。培根的蜜蜂正受到AI的威胁,而它们需要繁盛。AI必须遵循科学方法。 小编锐评: AI当然非常有用,我们天天都在高强度使用。但我讨厌的是追逐风口就能盈利这种环境,某些“宣讲/本子不带AI就会被拒”的现象之下,是舍本逐末,是人类的非理性。 至于在科学领域上的应用,需要明确地定义该模型的使用范围,严格地遵守规范(如OECD Principles)。做科学最终是要回到逻辑上的,也许真正的可解释性不存在或只能从数学上理解,那它们也永远是做engineering的工具或人类的智能助手。
Machine Learning & AI
· 2025-11-07
炼丹师速成指南:深度学习分子属性预测的超参数优化方法学
炼丹师速成指南:深度学习分子属性预测的超参数优化方法学 本文信息 标题: 用于高效精确分子属性预测的深度神经网络超参数调优方法学 作者: Xuan Dung James Nguyen, Y.A. Liu 发表时间: 2024年11月14日 单位: 弗吉尼亚理工学院暨州立大学, 化学工程系 (美国) 引用格式: Nguyen, X. D. J., & Liu, Y. A. (2025). Methodology for hyperparameter tuning of deep neural networks for efficient and accurate molecular property prediction. Computers and Chemical Engineering, 193, 108928. https://doi.org/10.1016/j.compchemeng.2024.108928 O’Malley, T., Bursztein, E., Long, J., Chollet, F. Keras documentation: KerasTuner. https://keras.io/keras_tuner/ (accessed 20 March 2024). 摘要 本文提出了一套用于分子属性预测 (MPP) 的深度神经网络超参数优化 (HPO) 方法学。以往大多数将深度学习应用于MPP的研究仅对HPO给予了有限的关注,从而导致预测属性的精度未能达到最优。为了提高MPP深度学习模型的效率和准确性,我们必须尽可能多地优化超参数,并选择一个能够支持并行执行HPO的软件平台。我们在Keras Tuner和Optuna软件包中,比较了随机搜索、贝叶斯优化、Hyperband算法以及贝叶斯-Hyperband组合在HPO中的表现。我们的结论是,以往MPP研究中未曾使用过的Hyperband算法,在计算效率上是最高的;同时,它在预测精度方面能给出最优或接近最优的MPP结果。基于我们的案例研究,我们推荐使用Python库 KerasTuner 进行HPO。 核心结论 HPO至关重要:系统性的超参数优化能够显著提升深度学习模型在分子属性预测任务上的准确性,相比默认或手动设置的参数,RMSE可降低数倍。 Hyperband算法胜出:在多种HPO算法(随机搜索、贝叶斯优化、Hyperband、BOHB)的比较中,Hyperband算法在计算效率上遥遥领先(快2至9倍),同时其预测精度通常能达到最优或接近最优的水平。 工具平台推荐:对于广大化学工程师和科研人员,KerasTuner 是一个功能强大、用户友好且易于上手的HPO Python库,它支持并行化,并内置了包括Hyperband在内的多种先进算法。 BOHB组合算法的权衡:尽管理论上更先进的贝叶斯-Hyperband组合算法 (BOHB) 在某些情况下能带来极其微小的精度提升,但其付出的计算时间成本显著增加,因此在本文的案例中并不具备性价比优势。 背景 近年来,机器学习 (ML),特别是深度神经网络 (DNN),在化学、材料和制药领域掀起了一场革命。利用这些强大的数据驱动模型,科学家们能够以前所未有的速度和精度预测分子的各种关键性质,如药物活性、材料的熔融指数、聚合物的玻璃化转变温度等,这一领域被称为分子属性预测 (MPP)。精准的MPP模型不仅能加速新药的发现和新材料的研发进程,还能显著降低实验成本。 然而,构建一个高性能的DNN模型并非易事,它如同一个复杂的“黑箱”,其内部包含了大量需要预先设定的“旋钮”——即超参数 (Hyperparameters)。这些参数,如网络的层数、每层的神经元数量、学习率、激活函数的选择等,共同定义了模型的结构和训练方式。它们的组合方式千变万化,不同的组合对模型最终的性能有着天壤之别的影响。手动“炼丹”调参不仅耗时耗力,而且往往带有很大的盲目性,很难找到最优解。 尽管超参数优化 (HPO) 的重要性已在机器学习领域成为共识,但在许多MPP的应用研究中,这一关键步骤却常常被忽视或简化处理。研究者们往往沿用文献中的“经验值”或仅对少数几个参数进行粗略调整。这种做法导致许多已发表的MPP模型的潜力未能被完全发掘,其预测精度远非其能达到的上限。因此,当前领域迫切需要一套系统、高效且易于实践的HPO方法学,以指导科研人员如何为他们的MPP任务构建最优的DNN模型。 关键科学问题 本文旨在为化学与材料领域的科研人员,特别是那些不具备深厚计算机科学背景的研究者,解决一个核心的实践问题:如何系统、高效地对用于分子属性预测的深度神经网络进行超参数优化,以在合理的计算时间内获得最高的预测精度? 为了回答这个宏观问题,作者将其分解为三个具体的、可操作的子问题: 算法比较:在现有的主流HPO算法中——随机搜索、贝叶斯优化和Hyperband,以及它们的组合——哪一种在MPP任务上能最好地平衡计算效率(时间成本)和预测准确性? 平台选择:市面上有多种支持HPO的软件库,哪一个平台是免费、用户友好、功能强大且支持并行计算的,最适合广大科研工作者快速上手? 方法学构建:能否提炼出一套一步一步的、清晰的方法论和实践见解,让一个初学者也能利用推荐的平台和算法,为自己的MPP问题成功地进行超参数调优? 通过对这些问题的深入探讨,本文的目标是填补从“知道HPO很重要”到“知道如何做好HPO”之间的巨大鸿沟。 创新点 系统性算法评估:首次在分子属性预测的背景下,对随机搜索、贝叶斯优化、Hyperband以及BOHB(贝叶斯与Hyperband的组合)等多种主流HPO算法的计算效率和预测精度进行了全面的、并排的比较。 发现并推荐Hyperband:研究发现,之前在MPP领域鲜有报道的Hyperband算法具有最高的计算效率,同时能达到最优或接近最优的预测精度,并基于此强烈推荐该算法。 提供实用工具与流程:为化学工程师和材料科学家推荐了KerasTuner和Optuna这两个用户友好的开源Python库,并提供了详细的分步方法论和Python代码,极大地降低了实施高级HPO的技术门槛。 量化HPO的巨大价值:通过两个具体的案例研究,明确量化了系统性HPO带来的巨大性能提升。与未经优化的基准模型相比,优化后的模型预测误差(RMSE)降低了6到8倍,准确率显著提高,强有力地证明了HPO是构建高性能MPP模型不可或ō缺的一步。 研究内容 方法详述:超参数优化的“武器库”与“靶场” 本文的核心是评估不同的HPO策略。作者首先选择了“武器”(HPO算法和软件平台),然后搭建了“靶场”(两个典型的MPP案例)来进行实证比较。 HPO算法与软件平台 表2:以往MPP研究和本研究中使用的HPO算法与软件平台 文献 HPO方法 软件平台 Chen and Tseng (2022) 贝叶斯优化 Hyperopt Held et al. (2024) 随机采样后接TPE算法 Chemprop 本研究 随机搜索,贝叶斯优化,Hyperband,以及BOHB KerasTuner,Optuna 作者选择了两个功能强大且广受欢迎的Python库: KerasTuner:因其直观、用户友好且易于编码而被选为主要平台,特别适合非计算机专业的科研人员。它内置了多种HPO算法,并且支持并行化以显著加速调优过程。 Optuna:作为一个补充平台,主要用于实现KerasTuner不支持的BOHB算法(贝叶斯优化与Hyperband的组合)。 本文比较了四种核心的HPO算法: 随机搜索 (Random Search):在预定义的超参数空间中随机抽样组合进行测试。 贝叶斯优化 (Bayesian Optimization):一种“智能”搜索方法。它会根据已测试点的表现,建立一个概率代理模型来预测哪些超参数组合可能会带来更好的性能,从而更高效地集中探索有希望的区域。 Hyperband:一种基于资源分配的快速算法。它采用“逐次减半 (successive halving)”策略:一开始用少量资源(如少量epochs)训练大量超参数组合,然后淘汰掉表现差的一半,再将更多资源分配给表现好的“幸存者”,如此循环,最终找到最优组合。这种“早停”机制避免了在不良超参数上浪费过多计算资源。 BOHB:结合了Hyperband和贝叶斯优化的优点。它使用贝叶斯优化来指导选择下一批候选超参数,而不是随机选择,理论上比Hyperband更智能。 图2:KerasTuner的通用工作流程图清晰地展示了HPO的迭代过程:选择超参数组合 -> 训练模型 -> 评估模型 -> 重复,直到满足用户设定的条件(如尝试次数),最后用找到的最佳超参数组合构建并评估最终模型。 案例研究(“靶场”)设置 表3:本文使用的数据集信息 案例研究1 案例研究2 主题 预测高密度聚乙烯(HDPE)的熔融指数 (MI) 预测聚合物的玻璃化转变温度 ($T_g$) 模型类型 全连接深度神经网络 (Dense DNN) 卷积神经网络 (CNN) 自变量数量 9个工艺参数 (65, 17, 1) 的图像化输入 样本数量 3745 352 输入特征 工艺参数(温度、压力等) 聚合物的SMILES字符串(通过one-hot编码转换为2D矩阵) 待优化的超参数 作者对两个案例都定义了广泛的超参数搜索空间,涵盖了模型结构和学习算法的方方面面。 表5:HDPE熔融指数预测的超参数搜索列表与描述(案例1) 超参数名称 类型 描述 搜索空间 units_1 整数 第一个隐藏层的节点数 32到512,步长32 alpha_1 浮点数 第一个隐藏层Leaky ReLU的斜率 0.05到0.5,步长0.05 dropout_1 浮点数 第一个dropout层的比率 0.05到0.5,步长0.05 num_layers 整数 额外的隐藏层数量 1到4 units_hid_i 整数 额外隐藏层i的节点数 32到512,步长32 alpha_hid_i 浮点数 额外隐藏层i的Leaky ReLU斜率 0.05到0.5,步长0.05 dropout_hid_i 浮点数 额外隐藏层i的dropout比率 0.05到0.5,步长0.05 learning_rate 选项 Adam优化器的学习率 [0.01, 0.001, 0.0001] 结果与分析 案例1:预测HDPE的熔融指数 (MI) 图1:HDPE熔融指数预测的基础DNN结构。 HPO的巨大威力:未经优化的基准DNN模型,其预测RMSE高达0.420,R²为0.92012。经过HPO后,最佳模型的RMSE降低至0.04792,R²提升至0.99692。性能提升了近8.8倍,效果惊人。 表1:有无超参数优化的分子属性预测精度对比 属性预测 均方根误差 (RMSE) (无HPO) 均方根误差 (RMSE) (有HPO) 决定系数 (R²) (无HPO) 决定系数 (R²) (有HPO) 1. HDPE熔融指数 0.420 0.048 0.92012 0.99692 2. 聚合物玻璃化转变温度 70.60 K 15.68 K - 0.94829 算法效率与精度对比: 表7:三种HPO算法对HDPE熔融指数预测的总调优时间 HPO算法 贝叶斯优化 随机搜索 Hyperband 耗时 09 h 08 m 51s 09 h 15 m 12s 00 h 59 m 55s 表9:新DNN模型在测试集上的性能结果 (HDPE MI预测) 性能指标 贝叶斯优化 随机搜索 Hyperband Loss 0.00463 0.00230 0.00271 MAE 0.04873 0.03014 0.03561 RMSE 0.06803 0.04792 0.05201 $R^2$ 0.99134 0.99692 0.99669 结论: Hyperband效率最高:调优时间仅为其他两种方法的约1/9。 随机搜索意外胜出:在这个相对简单的DNN模型案例中,随机搜索在测试集和交叉验证上均获得了最佳的预测精度。作者认为,这可能是因为对于简单的DNN,随机搜索已经足够找到一个非常好的解。 Hyperband表现稳健:尽管精度略低于随机搜索,但Hyperband的结果仍然非常出色,远超基准模型,并且考虑其巨大的时间优势,性价比极高。 图4-6分别展示了由贝叶斯优化、随机搜索和Hyperband找到的最佳DNN结构。图7-12则展示了对应的损失曲线和预测值-真实值对比图。 案例2:预测聚合物的玻璃化转变温度 ($T_g$) 图13:聚合物Tg预测的基础CNN结构详情。 HPO再次展现威力:基准CNN模型的预测准确率约为82%,MAPE (平均绝对百分比误差) 约为6%。经过HPO优化后,最佳模型的RMSE从70.60 K降至15.68 K,MAPE低至3.00%,R²高达0.95029,性能提升同样非常显著。 算法效率与精度对比: 表11:新CNN模型在测试集上的性能结果 ($T_g$预测) 性能指标 贝叶斯优化 随机搜索 Hyperband Loss 349.021 349.432 245.903 MAE 11.4451 11.6328 9.1034 MAPE 0.03731 0.03931 0.03002 RMSE 18.6821 18.6931 15.6813 $R^2$ 0.92709 0.92554 0.94829 结论: Hyperband全面占优:对于这个更复杂的CNN模型,Hyperband在所有性能指标上都显著优于贝叶斯优化和随机搜索,并且仍然保持着最高的计算效率(比贝叶斯快2.5倍,比随机搜索快3.5倍)。 贝叶斯优于随机搜索:与案例1不同,在此复杂案例中,贝叶斯优化的表现优于随机搜索,更符合理论预期。 图14-16展示了HPO找到的最佳CNN结构。图17-22展示了对应的损失曲线和预测-真实值对比。 BOHB组合算法的评估 作者进一步使用Optuna库测试了理论上更先进的BOHB算法。 表13a-d:BOHB与其他算法的性能和时间对比(节选) 案例 算法 耗时 RMSE $R^2$ HDPE MI Hyperband ~1 h 0.05201 0.99669 BOHB ~4 h 0.05577 0.99652 Polymer $T_g$ Hyperband ~6.5 h 15.6813 0.94829 BOHB ~11.6 h 15.5779 0.94901 结论:BOHB算法在简单的DNN案例中表现甚至不如Hyperband。在复杂的CNN案例中,虽然其精度略微优于Hyperband,但付出的计算时间成本几乎翻倍。因此,作者认为,这种微小的精度提升并不足以证明其增加的计算成本是合理的。 Q&A Q1: 为什么在进行HPO之前,作者建议先手动确定batch size(批处理大小)? A1: 作者给出了几个非常实际的理由: 1.降低搜索维度:HPO过程的计算成本随着超参数数量的增加而指数级增长。将batch size作为一个超参数会大大增加搜索空间的复杂性,显著延长调优时间。 2.受硬件限制:batch size的大小直接影响内存(特别是GPU显存)的占用。一个过大的batch size可能导致内存溢出,使训练崩溃。因此,它通常由硬件条件决定,而不是一个可以自由优化的参数。 3.影响相对较小且有经验法则:相比于学习率、网络结构等超参数,batch size对模型最终性能的直接影响相对较小。通常,适中的值(如32, 64, 128)就能提供稳定的性能。可以依据经验法则和硬件限制先将其固定下来。 4.与学习率的强相关性:batch size和学习率之间存在已知的关系(大batch size通常配合大学习率)。将它们分开处理,先固定batch size再精调学习率,可以简化优化问题。 Q2: 在案例1中,理论上更“智能”的贝叶斯优化为什么会输给简单的随机搜索? A2: 这是一个非常有趣的现象。作者解释说,尽管贝叶斯优化理论上更优,但在某些情况下,尤其是在有限的尝试次数(本文为500次)、简单的模型或非凸的超参数空间中,它可能表现不佳。贝叶斯优化可能会过早地收敛到某个局部最优区域并反复探索,而简单的随机搜索由于其“盲目性”,反而可能碰巧探索到被贝叶斯优化忽略的、更好的区域。这个结果提醒我们,没有“银弹”,算法的选择有时也依赖于具体问题。 Q3: Hyperband算法的核心优势是什么?为什么它能做到又快又好? A3: Hyperband的核心优势在于其高效的资源分配策略,即“早停”机制。传统方法(如随机搜索)会对每一个超参数组合都进行完整的训练(例如跑满100个epochs),这在坏的组合上浪费了大量时间。而Hyperband则像一个多轮淘汰赛: 第一轮:快速地用少量资源(如5个epochs)训练大量(如81个)不同的模型。 淘汰:淘汰掉表现最差的2/3模型。 第二轮:将更多资源(如15个epochs)分配给幸存的1/3模型(27个)。 循环:不断重复这个“训练-淘汰-晋级”的过程,直到只剩下一个模型,并对其进行最充分的训练。 通过这种方式,Hyperband能够迅速剔除没有前途的超参数组合,将宝贵的计算资源集中在少数有潜力的“精英”组合上,从而实现又快又好的效果。 Q4: 这篇论文的方法学对于我自己的研究有什么直接的指导意义? A4: 指导意义非常直接: 1.必须做HPO:如果你在使用DNN/CNN做任何预测任务,不要满足于默认参数或文献参数,系统性的HPO能带来巨大的性能提升。 2.首选Hyperband:在选择HPO算法时,将Hyperband作为你的首选或基准。它在速度和性能之间取得了极佳的平衡。 3.使用KerasTuner:如果你使用TensorFlow/Keras框架,KerasTuner是一个极好的起点。它易于使用,功能强大,能让你快速实施Hyperband等算法。 4.并行是关键:无论使用何种平台,确保利用其并行计算功能。在多核CPU或GPU上同时运行多个试验,可以将数天的调优过程缩短到数小时。 关键结论与批判性总结 潜在影响 ** democratizing HPO**:为化学、材料等领域的非计算机专业研究者提供了一套清晰、实用且高效的深度学习模型优化“标准作业程序 (SOP)”,极大地降低了构建高性能AI模型的门槛。 设定新基准:通过明确展示系统性HPO带来的巨大收益,本研究可能会提升领域内对模型质量的要求,促使未来的MPP研究更加重视并规范化超参数优化这一关键步骤。 效率驱动:强调了Hyperband算法在平衡速度与精度上的巨大优势,为面临计算资源限制的研究者提供了一个极具性价比的选择,有助于加速科研迭代周期。 研究局限性 模型和任务范围有限:研究主要集中在两种相对经典的神经网络结构(Dense DNN和CNN)以及两类特定的分子属性预测任务上。其结论是否能直接推广到更前沿、更复杂的模型(如图神经网络GNNs、Transformers)和更多样化的任务(如反应预测、逆向设计)上,仍有待验证。 数据集规模:所用的数据集规模中等(数千和数百个样本)。在更大规模(数十万甚至数百万样本)的数据集上,不同HPO算法的效率和性能排序可能会发生变化。 硬件平台单一:所有测试均在CPU上完成。在现代GPU集群上,不同算法的并行化效率和实际运行时间表现可能会有所不同。 未来方向 扩展到更复杂的模型:将本研究的方法学应用到图神经网络(GNNs)和Transformers等更先进的模型架构上,为这些模型的HPO提供指导。 更大规模的基准测试:在更大、更多样化的公开数据集上(如QM9、ZINC、MoleculeNet)重复本研究的比较,以获得更具普适性的结论。 自动化流程开发:开发一个集成了数据预处理、模型构建、HPO(以Hyperband为核心)和模型评估的全自动化工作流,实现分子属性预测的“一键式”优化建模。 小编锐评:其实就是速度比贝叶斯快,再调研下再说吧
Machine Learning & AI
· 2025-10-20
贝叶斯优化与高斯过程:从黑箱优化到核技巧的完整解析
贝叶斯优化与高斯过程:从黑箱优化到核技巧的完整解析 引言:黑箱优化的挑战 想象你正在实验室里优化一个全新的化学反应,想找到能让产率最高的反应条件。影响产率的因素有很多:温度(T)、反应时间(t)、催化剂浓度(c)等等。 这个函数 yield = f(T, t, c, ...) 对你来说就是一个黑箱——你不知道它的具体数学形式,只知道每次设定一组输入条件后,经过数小时甚至数天的实验,才能得到一个输出结果。 核心问题:如何用最少的实验次数,智能地找到能让产率最高的最佳条件? 这就是贝叶斯优化(Bayesian Optimization)要解决的问题。它是一种迭代式的、非常”省钱”(节省实验次数)的优化策略,核心由两个组件构成: 代理模型(Surrogate Model):根据已有实验数据,构建对”黑箱”函数的近似模型。它不仅预测新条件下的产率,还量化预测的不确定性。最常用的代理模型就是高斯过程(Gaussian Process, GP)。 采集函数(Acquisition Function):基于代理模型的预测值和不确定性,决策下一个实验点的位置,平衡”探索”与”利用”。 第一部分:高斯过程——不局限于特定模型的代理模型 1.1 传统模型的局限 在传统机器学习中,我们通常先假设一个具体的模型形式,比如线性回归 $y = w_0 + w_1T + w_2t + …$,然后通过数据拟合参数 $w$: \[p(y | x, w)\] 问题:我们凭什么假设真实函数是线性的?它可能是二次的、指数的、或任何复杂形状。一旦模型假设错误,就永远找不到最优解。 高斯过程提出了一个颠覆性想法:能不能不局限于任何一个特定模型,而是考虑所有可能的模型? 这可以用一个积分公式表达——对于新输入 $x$,其输出 $y$ 的概率分布为: \[p(y | x, D) = \int p(y | x, w) \cdot p(w | D) \, dw\] 其中: $p(w D)$:在观测数据 $D$ 后,模型 $w$ 为真实模型的可能性(后验概率) $p(y x, w)$:如果 $w$ 是真实模型,它对新输入 $x$ 的预测概率 $\int … dw$:对所有可能模型加权平均 问题是,这个积分无法计算,因为”所有可能的模型”有无穷多个! 1.2 高斯过程的”魔法”:让不可能变为可能 高斯过程利用高斯分布的优美数学性质,让上述积分变得可计算。它需要两个关键假设: 假设1:观测噪音是高斯的 \[y = f(x) + \epsilon, \quad \epsilon \sim \mathcal{N}(0, \sigma^2_n)\] 这符合直觉——任何实验测量都存在随机误差。 假设2:函数的先验分布是高斯过程 这是最核心的假设。高斯过程是多元高斯分布向无穷维度的延伸: 多元高斯分布:描述有限个随机变量的联合概率 高斯过程:描述一个函数的概率分布 定义:函数 $f(x)$ 是高斯过程,如果在任意有限个输入点 ${x_1, x_2, …, x_n}$ 处,其函数值 ${f(x_1), f(x_2), …, f(x_n)}$ 的联合分布服从多元高斯分布。 一个高斯过程完全由两部分定义: 均值函数 $m(x)$:对函数值的”平均”预期(通常设为0) 协方差函数(核函数) $k(x, x’)$:定义任意两点函数值之间的相关性 常用的径向基函数(RBF)核为: \[k(x_i, x_j) = \sigma_f^2 \exp\left(-\frac{\|x_i - x_j\|^2}{2l^2}\right)\] 物理直觉: 两点很接近 → 核函数值很大 → 输出值高度相关 两点很远 → 核函数值趋近0 → 输出值基本无关 现在我们进一步探讨一个更深层的问题:为什么高斯过程能够拟合任意复杂的函数? 这就引出了GP最强大的特性——核技巧。 1.3 核函数的本质:隐式的无限维映射 这里我们深入探讨一个关键问题:高斯过程为什么能够拟合任意复杂的函数? 这种强大能力来自核技巧(Kernel Trick),这也是GP被称为”非参数模型”的原因。 核函数 $k(x_i, x_j)$ 等价于:先用映射 $\Phi$ 将输入转换到高维特征空间,再计算内积: \[k(x_i, x_j) = \Phi(x_i) \cdot \Phi(x_j)\] 关键洞察:回顾GP的预测公式,映射后的特征向量 $\Phi(x)$ 从未独立出现过!所有计算只依赖于成对点之间的内积结果 $\Phi(x_i) \cdot \Phi(x_j)$。 这就是”技巧”所在: 我们想在高维空间计算(表达能力强) 但不想真的映射到高维(计算成本高) 核函数提供”后门”:直接在原始空间计算,得到高维空间的内积结果 比喻: 高维映射 $\Phi(x)$:为一本书创建包含无穷多项的”特征清单” 内积 $\Phi(x_i) \cdot \Phi(x_j)$:逐项对比两本书的无穷清单(不可能完成) 核函数 $k(x_i, x_j)$:神奇的图书管理员,看一眼原始输入就能直接给出”相似度”分数 RBF核的无限维特征 以一维输入为例,RBF核为: \[k(x, z) = \exp\left(-(x-z)^2\right)\] 展开这个公式: 展开指数: \(k(x, z) = \exp(-x^2)\exp(-z^2)\exp(2xz)\) 泰勒级数展开 $\exp(2xz)$: \(\exp(2xz) = \sum_{n=0}^{\infty} \frac{(2xz)^n}{n!} = \sum_{n=0}^{\infty} \frac{2^n}{n!} (x^n z^n)\) 代回得到: \(k(x, z) = \sum_{n=0}^{\infty} \left( \exp(-x^2) \sqrt{\frac{2^n}{n!}} x^n \right) \cdot \left( \exp(-z^2) \sqrt{\frac{2^n}{n!}} z^n \right)\) 这清晰地展示了隐式映射: \[\Phi(x) = \exp(-x^2) \left( \sqrt{\frac{2^0}{0!}}x^0, \sqrt{\frac{2^1}{1!}}x^1, \sqrt{\frac{2^2}{2!}}x^2, ... \right)\] 这是一个包含 $x$ 的所有幂次项的无限维向量! 结论:RBF核自动地、隐式地添加了无穷多个特征($x^0, x^1, x^2, …$),赋予GP拟合任意复杂函数的能力。我们只需计算一个简单的指数函数。 理解了核函数的强大能力后,现在我们来看看高斯过程是如何从哲学概念真正落实到具体计算的。 1.4 从哲学到计算:GP如何真正进行预测 哲学层面的理解:高斯过程考虑无穷多条可能的函数曲线。当观测到数据后,它”扔掉”所有不经过数据点的函数,剩余的函数形成后验分布。 通俗的比喻:想象一下,你想预测一条一米长的金属杆上任意点的温度。你手头只有几个测量数据,比如: 在10cm处,温度是30°C 在40cm处,温度是50°C 在90cm处,温度是25°C 现在,你想知道在70cm处的温度是多少?或者,整条杆的温度曲线长什么样? 传统方法:你可能会假设温度分布遵循某种特定的函数形式,比如二次函数 $T(x) = ax^2 + bx + c$,然后用已有的三个数据点去拟合,解出参数$a, b, c$。这样你就得到了一个唯一的、确定的温度曲线。 GP的思路:高斯过程彻底抛弃了”先假设一个函数形式”的想法。它的思路非常”开放”:在看到任何数据之前,我认为任何一条光滑的曲线都有可能是真实的温度曲线。 它考虑的不是一个函数,而是一个包含了无穷多条可能函数的”函数集合”或”函数空间”。 但实际计算中,GP不是真的生成无穷函数。它利用数学捷径,直接根据已有数据计算新点的预测。整个过程分为三步: 步骤1:构建协方差矩阵(”关系总表”) 这是整个计算的核心。GP的第一件事,就是利用你选择的核函数(那个”相似性规则”),为所有我们关心的点(包括已知的和未知的),制作一张巨大无比的”关系总表”。这张表在数学上被称为协方差矩阵 $\Sigma$。 这张表记录了每两个点之间的”相似度”或”关联性”: 10cm 40cm 90cm 70cm (新) 10cm 自己和自己最像 和40cm有点像 和90cm不像 和70cm有点像 40cm 和10cm有点像 自己和自己最像 和90cm不像 和70cm很像 90cm 和10cm不像 和40cm不像 自己和自己最像 和70cm有点像 70cm (新) 和10cm有点像 和40cm很像 和70cm有点像 自己和自己最像 这张表可以用一个分块矩阵来更清晰地表示: \[\Sigma = \begin{pmatrix} K(X_{obs}, X_{obs}) & K(X_{obs}, X_{new}) \\ K(X_{new}, X_{obs}) & K(X_{new}, X_{new}) \end{pmatrix}\] $K(X_{obs}, X_{obs})$:已知点之间的内部关系 $K(X_{new}, X_{new})$:新点之间的内部关系 $K(X_{obs}, X_{new})$:连接已知与未知的桥梁 步骤2:应用”高斯魔法”(条件概率) 高斯过程的定义保证了,所有这些点的温度值 $[Y_{obs}, Y_{new}]$ 作为一个整体,共同服从一个多元高斯分布,而这个分布的”形状”就是由我们刚刚构建的协方差矩阵 $\Sigma$ 所决定的。 现在,问题就转化成了一个经典的概率问题: 已知一个多元高斯分布,并且我们已经观测到了其中一部分变量的值($Y_{obs}$),求剩下那部分未知变量($Y_{new}$)的概率分布是什么? 这在数学上叫做求解条件概率 $p(Y_{new} Y_{obs})$。 而高斯分布最神奇的性质之一就是,它的条件概率分布依然是一个高斯分布,并且其均值和方差有精确的解析解!我们不需要做任何近似或迭代,只需要套用一个固定的矩阵运算公式就可以得到。 对于联合高斯分布: \[\begin{pmatrix} \mathbf{y} \\ \mathbf{f}_* \end{pmatrix} \sim \mathcal{N} \left( \mathbf{0}, \begin{pmatrix} K(X, X) + \sigma_n^2I & K(X, X_*) \\ K(X_*, X) & K(X_*, X_*) \end{pmatrix} \right)\] 条件概率分布为: $$\mu_{a b} = \mu_a + C B^{-1} (\mathbf{b} - \mu_b)$$ $$\Sigma_{a b} = A - C B^{-1} C^T$$ 步骤3:得出预测公式 代入GP的具体参数,得到: 预测均值(最佳预测值): \(\bar{\mathbf{f}}_* = K(X_*, X) [K(X, X) + \sigma_n^2 I]^{-1} \mathbf{y}\) 预测协方差(不确定性): \(\text{cov}(\mathbf{f}_*) = K(X_*, X_*) - K(X_*, X) [K(X, X) + \sigma_n^2 I]^{-1} K(X, X_*)\) 深入理解: 如何理解均值公式? 最佳预测值是所有已知观测值的加权平均。 权重是怎么来的? 权重取决于新点 $X_{new}$ 与各个已知点 $X_{obs}$ 的”关系”(由协方差矩阵的非对角块 $K(X_{new}, X_{obs})$ 提供)。 直观理解: 新点(70cm)和已知点(40cm)关系很密切(因为它们离得近),所以40cm处的温度(50°C)在加权平均中就占有很高的权重。 新点(70cm)和已知点(90cm)关系比较疏远,那么90cm处的温度(25°C)的权重就很低。 如何理解方差公式? 不确定性 = 先验的不确定性 - 从数据中学到的信息量。 先验的不确定性:在看到任何数据之前,我们对新点 $X_{new}$ 的不确定性是最大的。这个值由核函数 $k(X_{new}, X_{new})$ 决定(矩阵的右下角)。 从数据中学到的信息量:当我们引入观测数据 $Y_{obs}$ 后,这些数据为我们的预测提供了信息,从而降低了我们的不确定性。数据点离新点越近、信息量越足,我们能够从先验不确定性中”减去”的部分就越多。 直观理解: 在70cm处,由于离40cm很近,我们从40cm的数据点那里”学到”了很多信息,所以不确定性被大幅削减。 如果在某个离所有已知点都很远的地方(比如25cm处)进行预测,那么已知数据提供的信息量很少,我们能减去的不确定性就很少,因此最终的方差会很大。 可视化理解:GP就像一个概率版的”连点成线”——它画出一条最可能的曲线(均值),并给出”不确定性带”(方差),告诉你这条线在不同区域的可靠程度。 第二部分:采集函数——探索与利用的平衡 有了GP代理模型后,每个未知点 $x$ 都有预测分布 $\mathcal{N}(\mu(x), \sigma^2(x))$。采集函数决定”下一个实验点在哪里”。 这涉及经典的探索 vs. 利用权衡: 利用(Exploitation):在当前已知最优点附近实验(预测均值 $\mu(x)$ 最高) 探索(Exploration):去未知区域实验(不确定性 $\sigma^2(x)$ 最大) 2.1 期望提升(Expected Improvement, EI) 最常用的采集函数。假设当前最佳值为 $y_{best}$,EI计算的是:在点 $x$ 做实验,产率超过 $y_{best}$ 的期望值。 数学上,它计算 $y - y_{best}$ 在 $y > y_{best}$ 区域的期望。一个点如果: 预测均值 $\mu(x)$ 很高(利用) 或不确定性 $\sigma^2(x)$ 很大(探索) 其EI值都会很高。 优化循环: 找到使EI最大化的点:$x_{next} = \arg\max_x \text{EI}(x)$ 做实验,得到 $(x_{next}, y_{next})$ 更新GP模型 重复,直到满意或预算用完 总结:从哲学到实践的完整图景 贝叶斯优化的威力在于其系统性地平衡了探索与利用,用最少的实验次数找到最优解。 高斯过程的核心优势: 非参数性:不预设函数形式,适应任何复杂函数 不确定性量化:不仅给预测值,还给置信区间 核技巧:通过简单的核函数,隐式利用无限维特征空间 从理论到实践的完整路径: 哲学层面:GP考虑所有可能函数,数据筛选出后验分布 传统方法是演绎法:先假设一个公理(模型形式$f(x)$),然后用数据去推导参数。如果公理错了,结论就不可靠。 高斯过程是归纳法:它不预设任何具体的函数形式,只预设一些非常符合直觉的”规则”(通过核函数)。然后,它让数据自己”说话”,从数据出发,归纳出在每个点上,函数值最可能是什么,以及这个可能性有多大的范围。 数学层面:利用高斯分布性质,将无限维问题转为有限维矩阵运算 协方差矩阵构建:利用核函数为所有相关点(已知+未知)构建”关系总表” 条件概率应用:利用高斯分布的条件概率公式,一步到位地得出解析解 预测公式推导:得出均值和方差的精确计算公式 计算层面:核技巧让我们在原始空间计算,却享受高维空间的表达能力 核技巧本质:所有计算只依赖于特征向量的内积,而不是特征向量本身 无限维映射:RBF核通过泰勒级数展开,自动添加无穷多个特征 计算效率:只需计算简单的核函数,就能获得无限维特征空间的表达能力 这套理论不仅适用于化学反应优化,还广泛应用于超参数调优、材料设计、药物发现等需要”昂贵实验”的领域。它代表了机器学习与实验科学深度融合的典范。
Machine Learning & AI
· 2025-10-08
ChemXploreML:一款开箱即用的桌面软件,让分子属性预测迈向自动化与平民化
ChemXploreML:一款“开箱即用”的桌面软件,让分子属性预测迈向自动化与平民化 本文信息 标题: 使用ChemXploreML的机器学习流程进行分子属性预测 作者: Aravindh Nivas Marimuthu and Brett A. McGuire 发表时间: 2025年5月20日 单位: 麻省理工学院化学系 (美国),美国国家射电天文台 (美国) 引用格式: Marimuthu, A. N., & McGuire, B. A. (2025). Machine Learning Pipeline for Molecular Property Prediction Using ChemXploreML. Journal of Chemical Information and Modeling, 65, 5424–5437. https://doi.org/10.1021/acs.jcim.5c00516 软件与数据链接: ChemXploreML文档: https://aravindhnivas.github.io/ChemXploreML-docs/ ChemXploreML软件发布: https://github.com/aravindhnivas/ChemXploreML/releases 数据集与模型文件: https://zenodo.org/doi/10.5281/zenodo.15007626 摘要 我们在此推出ChemXploreML,一个为基于机器学习的分子属性预测而设计的模块化桌面应用程序。该框架的灵活架构允许将任何分子嵌入技术与现代机器学习算法相集成,使研究人员无需深厚的编程专业知识即可定制其预测流程。为了展示该框架的能力,我们实现并评估了两种分子嵌入方法——Mol2Vec和VICGAE(方差-不变性-协方差正则化的GRU自编码器)——并结合了最先进的基于树的集成学习方法(梯度提升回归、XGBoost、CatBoost和LightGBM)。我们使用五个基本分子性质——熔点、沸点、蒸气压、临界温度(CT)和临界压力——作为测试案例,在来自《CRC化学与物理手册》的数据集上验证了我们的框架。对于分布良好的性质,模型取得了优异的性能,其中CT预测的$R^2$值高达0.93。值得注意的是,虽然Mol2Vec嵌入(300维)提供了略高的精度,但VICGAE嵌入(32维)表现出相当的性能,同时计算效率显著提高。ChemXploreML的模块化设计便于轻松集成新的嵌入技术和机器学习算法,为定制化的属性预测任务提供了一个灵活的平台。该应用程序通过直观的界面,自动化了化学数据预处理(包括基于UMAP的分子空间探索)、模型优化和性能分析,使得复杂的机器学习技术变得触手可及,同时为高级化学信息学用户保留了可扩展性。 背景 在化学科学中,快速准确地预测分子性质,对于筛选化合物、加速新材料和新药物的发现至关重要。熔点(MP)、沸点(BP)、蒸气压(VP)、临界温度(CT)和临界压力(CP)等基本物理化学性质是理解分子行为的基础,无论在工业应用还是理论研究中都不可或缺。然而,通过传统实验方法测定这些性质不仅耗时费力,成本也十分高昂,这极大地限制了我们探索广阔化学空间的能力。 机器学习(ML)的崛起为分子属性预测带来了革命性的变化。其核心挑战在于如何将分子的化学结构转化为机器能够理解的数字“语言”,即分子嵌入(molecular embedding),同时最大限度地保留关键的化学信息。近年来,诸如Mol2Vec和VICGAE(方差-不变性-协方差正则化的GRU自编码器)等先进的嵌入技术应运而生,它们能够将分子映射到高维向量空间中,为精准预测奠定了基础。 然而,一个成功的预测任务不仅依赖于好的分子表示和ML算法,更需要一个完整、稳健的工作流,它涵盖了从数据清洗、预处理、模型选择、超参数优化到性能评估的每一个环节。对于许多化学家而言,搭建这样一个复杂的计算流程需要跨领域的编程和数据科学知识,技术门槛相当高。因此,目前迫切需要一个能够将这些复杂步骤集成并自动化的工具,让化学研究者可以专注于化学问题本身,而不是纠缠于代码和算法细节。 关键科学问题 能否开发一个模块化的、用户友好的桌面应用程序,将从数据预处理、分子嵌入、模型训练、超参数优化到结果可视化的整个机器学习流程集成起来,从而降低分子属性预测的技术门槛,使其能够被更广泛的化学研究者使用? 同时,利用这样一个统一的平台,不同的分子嵌入技术(如高维的Mol2Vec和低维的VICGAE)在与先进的树模型结合进行属性预测时,它们在预测精度和计算效率之间存在怎样的具体权衡关系? 创新点 发布ChemXploreML软件:开发并推出了一款功能全面、模块化的桌面应用程序,旨在实现分子属性预测流程的自动化和“平民化”,其内置了包括九种降维算法在内的丰富数据探索工具。 系统性评估嵌入技术:在统一的软件框架下,对两种代表性的分子嵌入方法——Mol2Vec(无监督、高维)和VICGAE(自编码器、低维)——进行了并排的性能基准测试。 揭示精度与效率的权衡:明确量化了不同嵌入方法在性能上的权衡关系:高维的Mol2Vec在精度上略胜一筹,而低维的VICGAE在性能相当的情况下,计算速度快了近10倍,为不同应用场景(如高通量筛选)提供了选择依据。 研究内容 核心工具:ChemXploreML的功能与架构 ChemXploreML旨在将复杂的ML工作流封装在一个直观的桌面应用中。它主要由分子嵌入、机器学习训练和分子分析/探索三大核心模块组成。 graph TD subgraph direction LR subgraph "输入与探索" A("加载数据文件<br/>(CSV、JSON等)") --> B("<b>分子分析模块</b><br/>- 单分子性质计算<br/>- 官能团/环系分析") A --> C("<b>数据探索</b><br/>- 元素/结构/性质分布<br/>- 降维可视化(UMAP、t-SNE等)") end subgraph "特征工程(分子嵌入)" C --> D("<b>分子嵌入模块</b>") subgraph "支持的嵌入器" D1("VICGAE") D2("Mol2Vec") D3("ChemBERTa") D4("MoLFormer-XL") end D --> E{{"分子嵌入向量<br/>(.npy文件)"}} end subgraph "模型训练与预测" E --> F("<b>机器学习训练模块</b>") subgraph "训练流程" F1("配置训练<br/>(Train/Test划分、CV)") --> F2("选择ML模型") F2 --> F3("高级选项<br/>(数据清洗、HPO、SHAP)") F3 --> F4("运行与保存<br/>(生成.pkl模型)") end F --> G("<b>结果分析</b><br/>- 性能指标(R²、RMSE)<br/>- Parity Plot<br/>- 适用域分析") F4 --> H("<b>机器学习预测模块</b><br/>- 加载已训练模型<br/>- 预测新分子") end ChemXploreML软件提供了从数据输入到模型预测的端到端解决方案,其核心功能和内置工具包括: 丰富的分子嵌入器:内置了包括VICGAE、Mol2Vec、ChemBERTa、MoLFormer-XL在内的四种SOTA嵌入模型。 全面的机器学习模型库:支持从线性模型、支持向量机、近邻算法到**高级梯度提升框架(XGBoost、LightGBM、CatBoost)**等多种算法。 强大的数据探索工具:除了基本的数据集统计分析,软件还集成了九种降维算法用于化学空间的可视化探索。 自动化的工作流程:通过Optuna进行超参数优化,通过Cleanlab进行数据清洗,通过SHAP进行模型解释,将复杂的ML操作流程化、自动化。 核心概念深度解析:高级功能模块 智能数据清洗:Cleanlab算法 是什么? Cleanlab是一种先进的机器学习算法,专门用于自动检测和修正数据集中错误的标签(label)。在化学属性预测任务中,“标签”就是我们希望模型预测的目标值,例如实验测得的熔点。由于实验或记录错误,这些标签有时会是错误的,这种情况被称为标签噪声(label noise)。 工作原理 Cleanlab的核心是置信学习(Confident Learning)框架。其基本思想是:如果一个模型在交叉验证中,能够持续且自信地将某个数据点预测为A类,但它的真实标签却是B类,那么这个数据点的标签B就很有可能是错误的。Cleanlab通过系统性地估计每个数据点的噪声概率,来识别出这些“可疑”的样本。 在ChemXploreML中的作用 在ChemXploreML中启用Cleanlab功能,软件会在模型训练前自动运行该算法,识别并移除那些标签可能错误的分子。这相当于在投喂给模型“学习资料”之前,先请了一位“自动审校员”修正错误,从而确保模型学习到的是更干净、更准确的结构-性质关系,最终提升其预测的准确性。 模型可靠性评估:适用域分析(AD) 适用域(Applicability Domain, AD)定义了模型能够做出可靠预测的“化学空间”范围。如果一个新分子的特征超出了这个范围,模型对它的预测就可能是不可信的外插。ChemXploreML通过计算杠杆值和马氏距离来帮助用户评估AD。 杠杆值(Leverage Value) 杠杆值是统计学中用于回归诊断的一个指标,它衡量了一个数据点在特征空间(X空间)中的极端程度。一个数据点的杠杆值越大,说明它的**分子特征(即其嵌入向量)**相对于训练集中的所有分子来说越“特立独行”或“异常”。在预测时,如果一个新分子的杠杆值过高,说明它落在了模型的适用域之外,模型在训练时很少见过类似结构的分子,因此其预测结果的置信度较低。 马氏距离(Mahalanobis Distance) 马氏距离是一种更高级的距离度量,它在计算时考虑了特征之间的相关性以及数据分布的方差。它衡量的是一个点距离数据云中心的“统计学距离”。一个大的马氏距离意味着这个分子在多维特征空间中是一个统计学上的离群点。与杠杆值一样,它也是判断一个新分子是否在AD内的重要指标,对于衡量一个分子是否为离群点更为稳健。 化学空间探索:高维数据的降维与可视化 ChemXploreML的降维模块提供了一套强大的算法,将高维的分子嵌入向量投影到二维或三维空间,从而实现对化学空间的可视化。 软件支持以下九种降维方法,每种方法在保持数据结构(局部/全局)和计算速度方面各有千秋: | 方法 | 核心描述 | 局部/全局结构保持 | 速度 | | :— | :— | :— | :— | | PCA | 线性技术,最大化保留数据方差。 | 中/优 | 快 | | UMAP | 非线性流形学习,平衡保持局部和全局结构。 | 优/中 | 快 | | t-SNE| 非线性技术,擅长可视化数据的聚类结构。 | 优/差 | 慢 | | KernelPCA| 使用核方法的非线性PCA。 | 良/良 | 较慢 | | PHATE | 基于热扩散,擅长可视化数据中的轨迹和演变趋势。 | 良/优 | 中 | | ISOMAP | 非线性技术,保持点之间的测地线距离。 | 优/良 | 中 | | Laplacian Eigenmaps| 通过构建图来保持局部流形信息的光谱方法。 | 优/差 | 快 | | TriMap | 使用三元组约束来同时保持局部和全局结构。 | 优/良 | 快 | | Factor Analysis | 线性统计方法,用于发现潜在的“因子”变量。 | 有限/良| 快 | 本研究的作者特意选用了UMAP,因为它能很好地捕捉化学空间中复杂的非线性结构-性质关系,在保持局部聚类和全局拓扑结构之间取得了很好的平衡,且计算速度快。 **图1:五种热力学性质数据集的元素组成和结构分布分析。左侧面板显示元素频率分布,其中碳(C)、氧(O)和氮(N)是所有数据集中最主要的元素。右侧面板显示分子大小分布的核密度估计图,以及指示结构组成的饼图:非环状(橙色)、芳香性(蓝色)和环状非芳香性(绿色)化合物。 图2:数据集中分子性质的分布分析。主图显示了熔点(MP, °C)、沸点(BP, °C)、蒸气压(VP, kPa at 25 °C)、临界压力(CP, MPa)和临界温度(CT, K)的频率分布。插图中的Q-Q图评估了每个分布的正态性,线性排列表示符合正态分布。计算出的偏度值揭示了不同程度的分布对称性,偏度值越接近零表示分布越对称。 图3:UMAP投影图,展示了五种不同性质的分子嵌入的聚类模式。每个子图代表一个二维的高维分子数据表示,其中的点根据其各自的属性值进行着色。 注意:此处选择的色图因其高视觉对比度而被使用。 UMAP的可视化结果(图3)直观地证明了其有效性。图中每个点代表一个分子,颜色代表其属性值。性质相近的分子在二维投影空间中也倾向于聚集在一起,形成了从蓝色(低值)到红色(高值)的平滑过渡区域,清晰地揭示了嵌入向量所捕捉到的结构-性质关系。 模型性能基准测试 **表3:不同回归模型在各项分子性质上的优化超参数。 图4:使用Mol2Vec嵌入的梯度提升回归器在MP预测任务上的超参数优化景观图,通过Optuna的等高线图进行可视化。该优化空间探索了关键的GBR参数。较暗的区域代表最小化目标函数(RMSE)的更优参数组合。每个子图中的灰点代表实际采样的超参数组合。 ChemXploreML集成的Optuna能够自动寻找最优的模型超参数组合。图4展示了这一过程的可视化结果,其中深色区域代表能使模型误差最小化的“最优”参数区间。表3则列出了所有模型在所有任务上找到的最优超参数。 表1:分子性质数据集大小摘要。 | 性质 | 嵌入器 | 原始数量 | 验证后数量 | 清洗后数量 | | :— | :— | :— | :— | :— | | MP | Mol2Vec | 7476 | 7476 | 6167 | | | VICGAE | 7476 | 7200 | 6030 | | BP | Mol2Vec | 4915 | 4915 | 4816 | | | VICGAE | 4915 | 4909 | 4663 | | VP | Mol2Vec | 398 | 398 | 353 | | | VICGAE | 398 | 398 | 323 | | CP | Mol2Vec | 777 | 777 | 753 | | | VICGAE | 777 | 776 | 752 | | CT | Mol2Vec | 819 | 819 | 819 | | | VICGAE | 819 | 818 | 777 | 表4:不同机器学习模型使用Mol2vec和VICGAE嵌入进行分子属性预测的性能比较。对于每种性质,最佳性能指标(最高的R²和最低的RMSE、MAE)以粗体突出显示。括号中的值代表最后一位有效数字的标准差。所有指标均通过5折交叉验证计算。 图5:使用Mol2Vec和VICGAE两种嵌入方式,不同机器学习模型在各种分子性质上的性能比较。图中显示了GBR、CatBoost、LGBM和XGBoost模型预测五种分子性质的R²分数。对于每种性质,实心条代表使用Mol2Vec嵌入的预测,而相同颜色的较浅条形表示使用VICGAE嵌入。条内的黑色实线代表通过5折交叉验证获得的误差棒(标准差)。 图6:五种分子性质(行)使用四种回归模型(列)时,实验值与预测值的比较。蓝色和橙色点分别代表训练集和测试集数据,黑线表示理想的1:1相关性,橙色线表示测试集的线性拟合。插图中显示了通过5折交叉验证得到的性能指标(R², RMSE, MAE)。 整体性能:在临界温度(CT)、临界压力(CP)和沸点(BP)这三个性质上都取得了优异的预测性能,$R^2$值普遍在0.9以上。熔点(MP)的预测性能中等($R^2$ ≈ 0.86)。蒸气压(VP)的预测最差($R^2$ ≈ 0.4)。 模型比较:在四种先进的树模型中,CatBoost通常表现最佳或并列最佳。 关键权衡:Mol2Vec vs. VICGAE的精度与效率 图7:在MP数据集上,不同回归模型使用Mol2Vec和VICGAE嵌入时的计算执行时间比率。基准测试在Apple M2 Pro处理器上进行。条内的黑色实线代表误差棒,表示测速因子中的不确定性。 这是本研究的核心发现之一: 精度:在大多数情况下,维度更高(300-D)的Mol2Vec在预测精度上略微优于维度更低(32-D)的VICGAE。 效率:然而,如图7所示,VICGAE的计算速度远超Mol2Vec。在最大的MP数据集上,对于GBR模型,使用VICGAE的速度是Mol2Vec的近10倍。 权衡结论:对于需要最高精度的任务,Mol2Vec是更好的选择。但对于需要快速迭代或进行高通量筛选的应用,VICGAE以微小的精度牺牲换来了巨大的速度提升。 Q&A Q1: Mol2Vec和VICGAE这两种分子嵌入方法的核心思想有什么不同?为什么它们的向量维度差异如此之大(300 vs 32)? A1: Mol2Vec的核心思想源于自然语言处理的Word2Vec。它将分子“拆解”成一系列重叠的化学子结构(类似句子中的“单词”),然后通过无监督学习,为每个子结构(单词)学习一个向量表示。一个分子的最终向量是其所有子结构向量的简单加和。它更关注局部的化学环境。其300维的设置是借鉴了NLP领域的常用维度,旨在提供足够丰富的表达空间。 VICGAE则是一种基于自编码器的深度学习方法。它训练一个神经网络,先将整个分子的SELFIES字符串“压缩”到一个低维的潜在向量(编码过程),然后再从这个向量“解压”并重建出原始的字符串(解码过程)。通过这种方式,模型被迫学习到一个能够捕捉分子全局结构信息的、高度浓缩的向量表示。其32维的设计是为了在保持信息完整性的同时,实现最大程度的压缩,从而提高计算效率。 Q2: 软件支持九种降维方法。为什么作者在论文中只使用UMAP?其他方法(如t-SNE或PHATE)可能会揭示什么不同的信息? A2: 作者选择UMAP是因为它在保留局部和全局结构、计算速度以及可视化效果之间取得了出色的平衡,非常适合进行探索性数据分析。相比之下: t-SNE更专注于保留局部结构,它能生成非常清晰的类簇(clusters),但在不同类簇的相对位置和大小(即全局结构)上可能会产生误导。 PHATE则特别擅长可视化数据中的轨迹和连续演变过程。如果数据集包含一个从简单到复杂的同系物序列,PHATE可能会比UMAP更清晰地展示出这种连续变化的流形结构。 ChemXploreML提供其他工具的价值在于,用户可以根据自己数据的特点和分析目标,选择最合适的降维“镜头”来观察化学空间。 Q3: ChemXploreML作为一个桌面应用,它的目标用户是谁?相比于写Python脚本,它提供了哪些核心价值? A3: ChemXploreML的目标用户是广大不具备深厚编程或数据科学背景的化学研究者,例如有机合成化学家、药物化学家或材料科学家。相比于需要手动编写Python脚本的工作流,它的核心价值在于集成化、自动化和易用性: 降低技术门槛:用户无需编写一行代码,即可通过点击图形界面完成从数据导入、预处理、模型训练、调优到评估的全过程。 工作流标准化:它将最佳实践(如交叉验证、数据清洗、超参数优化)固化在软件流程中,避免了用户因经验不足而犯错,保证了结果的可靠性和可复现性。 效率提升:将所有工具链无缝集成,大大减少了在不同软件和脚本之间切换的时间,让研究者能更专注于分析和化学洞见的挖掘。 关键结论与批判性总结 核心结论 本文成功开发并推出了一款名为ChemXploreML的模块化桌面应用,它将复杂的机器学习流程集成于一个用户友好的图形界面中,显著降低了分子属性预测的技术门槛。 在预测五种基本物理化学性质的任务中,ChemXploreML内置的流程表现出色,在CT、CP、BP等性质上$R^2$值均超过0.9,性能达到或超过了许多更复杂的模型。 对比发现,高维(300-D)的Mol2Vec嵌入在精度上略有优势,而低维(32-D)的VICGAE嵌入在保持相当性能的同时,计算效率提升了近10倍,揭示了两者在实际应用中的重要权衡。 研究强调,模型性能不仅取决于算法,也高度依赖于数据集的质量和性质分布。 潜在影响 ChemXploreML作为一款开源的、开箱即用的工具,有望在更广泛的化学和材料科学社区中普及机器学习的应用,真正实现AI工具的“平民化”。 本文对不同嵌入方法的系统性基准测试,为研究者在具体应用中如何选择合适的分子表示法提供了清晰的、量化的指导。 存在的局限性 本研究主要集中在回归任务和树模型上,尚未在软件中全面实现分类任务和其他类型的模型。 性能评估主要基于几个经典的物理化学性质,在更复杂的生物活性或量子化学性质预测上的表现有待进一步验证。 添加全新的、非内置的嵌入方法或模型,可能仍需要一定的编程能力。 未来研究方向 继续扩展ChemXploreML的功能,集成更多的模型(如图神经网络、分类器)和嵌入技术。 开发专门针对小样本、数据分布不均问题的嵌入或学习策略。 全面利用软件内置的“适用域(Applicability Domain)”分析功能,以评估模型对全新分子的预测可靠性。
Machine Learning & AI
· 2025-10-08
<
>
Touch background to close